Add tools metadata annotations to the support library
Change-Id: I018ccee411da848e6ced91da316f86ae149dc218
diff --git a/v4/java/android/support/v4/app/ActionBarDrawerToggle.java b/v4/java/android/support/v4/app/ActionBarDrawerToggle.java
index 5c7e733..7589fa9 100644
--- a/v4/java/android/support/v4/app/ActionBarDrawerToggle.java
+++ b/v4/java/android/support/v4/app/ActionBarDrawerToggle.java
@@ -24,6 +24,9 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.os.Build;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.DrawerLayout;
@@ -64,6 +67,7 @@
* @return Delegate to use for ActionBarDrawableToggles, or null if the Activity
* does not wish to override the default behavior.
*/
+ @Nullable
Delegate getDrawerToggleDelegate();
}
@@ -72,6 +76,7 @@
* @return Up indicator drawable as defined in the Activity's theme, or null if one is not
* defined.
*/
+ @Nullable
Drawable getThemeUpIndicator();
/**
@@ -80,14 +85,14 @@
* @param upDrawable - Drawable to set as up indicator
* @param contentDescRes - Content description to set
*/
- void setActionBarUpIndicator(Drawable upDrawable, int contentDescRes);
+ void setActionBarUpIndicator(Drawable upDrawable, @StringRes int contentDescRes);
/**
* Set the Action Bar's up indicator content description.
*
* @param contentDescRes - Content description to set
*/
- void setActionBarDescription(int contentDescRes);
+ void setActionBarDescription(@StringRes int contentDescRes);
}
private interface ActionBarDrawerToggleImpl {
@@ -211,7 +216,8 @@
* for accessibility
*/
public ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout,
- int drawerImageRes, int openDrawerContentDescRes, int closeDrawerContentDescRes) {
+ @DrawableRes int drawerImageRes, @StringRes int openDrawerContentDescRes,
+ @StringRes int closeDrawerContentDescRes) {
mActivity = activity;
// Allow the Activity to provide an impl
diff --git a/v4/java/android/support/v4/app/ActivityCompat.java b/v4/java/android/support/v4/app/ActivityCompat.java
index a30eff2..f456a1b 100644
--- a/v4/java/android/support/v4/app/ActivityCompat.java
+++ b/v4/java/android/support/v4/app/ActivityCompat.java
@@ -20,6 +20,7 @@
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
+import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
/**
@@ -84,7 +85,7 @@
* supplied here; there are no supported definitions for
* building it manually.
*/
- public static void startActivity(Activity activity, Intent intent, Bundle options) {
+ public static void startActivity(Activity activity, Intent intent, @Nullable Bundle options) {
if (Build.VERSION.SDK_INT >= 16) {
ActivityCompatJB.startActivity(activity, intent, options);
} else {
@@ -112,7 +113,8 @@
* supplied here; there are no supported definitions for
* building it manually.
*/
- public static void startActivityForResult(Activity activity, Intent intent, int requestCode, Bundle options) {
+ public static void startActivityForResult(Activity activity, Intent intent, int requestCode,
+ @Nullable Bundle options) {
if (Build.VERSION.SDK_INT >= 16) {
ActivityCompatJB.startActivityForResult(activity, intent, requestCode, options);
} else {
diff --git a/v4/java/android/support/v4/app/DialogFragment.java b/v4/java/android/support/v4/app/DialogFragment.java
index 8c67bf5..3c7773a 100644
--- a/v4/java/android/support/v4/app/DialogFragment.java
+++ b/v4/java/android/support/v4/app/DialogFragment.java
@@ -21,12 +21,18 @@
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.support.annotation.IntDef;
+import android.support.annotation.NonNull;
+import android.support.annotation.StyleRes;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Static library support version of the framework's {@link android.app.DialogFragment}.
* Used to write apps that run on platforms prior to Android 3.0. When running
@@ -37,6 +43,11 @@
public class DialogFragment extends Fragment
implements DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {
+ /** @hide */
+ @IntDef({STYLE_NORMAL, STYLE_NO_TITLE, STYLE_NO_FRAME, STYLE_NO_INPUT})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface DialogStyle {}
+
/**
* Style for {@link #setStyle(int, int)}: a basic,
* normal dialog.
@@ -98,7 +109,7 @@
* @param theme Optional custom theme. If 0, an appropriate theme (based
* on the style) will be selected for you.
*/
- public void setStyle(int style, int theme) {
+ public void setStyle(@DialogStyle int style, @StyleRes int theme) {
mStyle = style;
if (mStyle == STYLE_NO_FRAME || mStyle == STYLE_NO_INPUT) {
mTheme = android.R.style.Theme_Panel;
@@ -195,6 +206,7 @@
return mDialog;
}
+ @StyleRes
public int getTheme() {
return mTheme;
}
@@ -333,6 +345,7 @@
*
* @return Return a new Dialog instance to be displayed by the Fragment.
*/
+ @NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new Dialog(getActivity(), getTheme());
}
diff --git a/v4/java/android/support/v4/app/Fragment.java b/v4/java/android/support/v4/app/Fragment.java
index 621bbbb..6e0e898 100644
--- a/v4/java/android/support/v4/app/Fragment.java
+++ b/v4/java/android/support/v4/app/Fragment.java
@@ -25,6 +25,8 @@
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.support.v4.util.SimpleArrayMap;
import android.support.v4.util.DebugUtils;
import android.util.AttributeSet;
@@ -609,7 +611,7 @@
*
* @param resId Resource id for the CharSequence text
*/
- public final CharSequence getText(int resId) {
+ public final CharSequence getText(@StringRes int resId) {
return getResources().getText(resId);
}
@@ -619,7 +621,7 @@
*
* @param resId Resource id for the string
*/
- public final String getString(int resId) {
+ public final String getString(@StringRes int resId) {
return getResources().getString(resId);
}
@@ -632,7 +634,7 @@
* @param formatArgs The format arguments that will be used for substitution.
*/
- public final String getString(int resId, Object... formatArgs) {
+ public final String getString(@StringRes int resId, Object... formatArgs) {
return getResources().getString(resId, formatArgs);
}
@@ -1013,8 +1015,8 @@
*
* @return Return the View for the fragment's UI, or null.
*/
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
return null;
}
@@ -1028,7 +1030,7 @@
* @param savedInstanceState If non-null, this fragment is being re-constructed
* from a previous saved state as given here.
*/
- public void onViewCreated(View view, Bundle savedInstanceState) {
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
}
/**
@@ -1037,6 +1039,7 @@
*
* @return The fragment's root view, or null if it has no layout.
*/
+ @Nullable
public View getView() {
return mView;
}
@@ -1054,7 +1057,7 @@
* @param savedInstanceState If the fragment is being re-created from
* a previous saved state, this is the state.
*/
- public void onActivityCreated(Bundle savedInstanceState) {
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mCalled = true;
}
@@ -1069,7 +1072,7 @@
* @param savedInstanceState If the fragment is being re-created from
* a previous saved state, this is the state.
*/
- public void onViewStateRestored(Bundle savedInstanceState) {
+ public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
mCalled = true;
}
diff --git a/v4/java/android/support/v4/app/FragmentActivity.java b/v4/java/android/support/v4/app/FragmentActivity.java
index 596653a..ad57bb8 100644
--- a/v4/java/android/support/v4/app/FragmentActivity.java
+++ b/v4/java/android/support/v4/app/FragmentActivity.java
@@ -26,6 +26,7 @@
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
+import android.support.annotation.NonNull;
import android.support.v4.util.SimpleArrayMap;
import android.util.AttributeSet;
import android.util.Log;
@@ -238,7 +239,7 @@
* Add support for inflating the <fragment> tag.
*/
@Override
- public View onCreateView(String name, Context context, AttributeSet attrs) {
+ public View onCreateView(String name, @NonNull Context context, @NonNull AttributeSet attrs) {
if (!"fragment".equals(name)) {
return super.onCreateView(name, context, attrs);
}
diff --git a/v4/java/android/support/v4/app/FragmentManager.java b/v4/java/android/support/v4/app/FragmentManager.java
index 37b37d2..cb2eff2 100644
--- a/v4/java/android/support/v4/app/FragmentManager.java
+++ b/v4/java/android/support/v4/app/FragmentManager.java
@@ -23,6 +23,8 @@
import android.os.Looper;
import android.os.Parcel;
import android.os.Parcelable;
+import android.support.annotation.IdRes;
+import android.support.annotation.StringRes;
import android.support.v4.util.DebugUtils;
import android.support.v4.util.LogWriter;
import android.util.Log;
@@ -90,12 +92,14 @@
* Return the full bread crumb title resource identifier for the entry,
* or 0 if it does not have one.
*/
+ @StringRes
public int getBreadCrumbTitleRes();
/**
* Return the short bread crumb title resource identifier for the entry,
* or 0 if it does not have one.
*/
+ @StringRes
public int getBreadCrumbShortTitleRes();
/**
@@ -164,7 +168,7 @@
* on the back stack associated with this ID are searched.
* @return The fragment if found or null otherwise.
*/
- public abstract Fragment findFragmentById(int id);
+ public abstract Fragment findFragmentById(@IdRes int id);
/**
* Finds a fragment that was identified by the given tag either when inflated
@@ -392,7 +396,7 @@
* Callbacks from FragmentManagerImpl to its container.
*/
interface FragmentContainer {
- public View findViewById(int id);
+ public View findViewById(@IdRes int id);
}
/**
diff --git a/v4/java/android/support/v4/app/FragmentTransaction.java b/v4/java/android/support/v4/app/FragmentTransaction.java
index 23fedf9..d984d36 100644
--- a/v4/java/android/support/v4/app/FragmentTransaction.java
+++ b/v4/java/android/support/v4/app/FragmentTransaction.java
@@ -16,6 +16,16 @@
package android.support.v4.app;
+import android.support.annotation.AnimRes;
+import android.support.annotation.IdRes;
+import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
+import android.support.annotation.StyleRes;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Static library support version of the framework's {@link android.app.FragmentTransaction}.
* Used to write apps that run on platforms prior to Android 3.0. When running
@@ -32,7 +42,7 @@
/**
* Calls {@link #add(int, Fragment, String)} with a null tag.
*/
- public abstract FragmentTransaction add(int containerViewId, Fragment fragment);
+ public abstract FragmentTransaction add(@IdRes int containerViewId, Fragment fragment);
/**
* Add a fragment to the activity state. This fragment may optionally
@@ -49,12 +59,13 @@
*
* @return Returns the same FragmentTransaction instance.
*/
- public abstract FragmentTransaction add(int containerViewId, Fragment fragment, String tag);
+ public abstract FragmentTransaction add(@IdRes int containerViewId, Fragment fragment,
+ @Nullable String tag);
/**
* Calls {@link #replace(int, Fragment, String)} with a null tag.
*/
- public abstract FragmentTransaction replace(int containerViewId, Fragment fragment);
+ public abstract FragmentTransaction replace(@IdRes int containerViewId, Fragment fragment);
/**
* Replace an existing fragment that was added to a container. This is
@@ -72,7 +83,8 @@
*
* @return Returns the same FragmentTransaction instance.
*/
- public abstract FragmentTransaction replace(int containerViewId, Fragment fragment, String tag);
+ public abstract FragmentTransaction replace(@IdRes int containerViewId, Fragment fragment,
+ @Nullable String tag);
/**
* Remove an existing fragment. If it was added to a container, its view
@@ -146,7 +158,12 @@
* Bit mask that is set for all exit transitions.
*/
public static final int TRANSIT_EXIT_MASK = 0x2000;
-
+
+ /** @hide */
+ @IntDef({TRANSIT_NONE, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface Transit {}
+
/** Not set up for a transition. */
public static final int TRANSIT_UNSET = -1;
/** No animation for transition. */
@@ -164,7 +181,8 @@
* entering and exiting in this transaction. These animations will not be
* played when popping the back stack.
*/
- public abstract FragmentTransaction setCustomAnimations(int enter, int exit);
+ public abstract FragmentTransaction setCustomAnimations(@AnimRes int enter,
+ @AnimRes int exit);
/**
* Set specific animation resources to run for the fragments that are
@@ -172,21 +190,21 @@
* and <code>popExit</code> animations will be played for enter/exit
* operations specifically when popping the back stack.
*/
- public abstract FragmentTransaction setCustomAnimations(int enter, int exit,
- int popEnter, int popExit);
+ public abstract FragmentTransaction setCustomAnimations(@AnimRes int enter,
+ @AnimRes int exit, @AnimRes int popEnter, @AnimRes int popExit);
/**
* Select a standard transition animation for this transaction. May be
* one of {@link #TRANSIT_NONE}, {@link #TRANSIT_FRAGMENT_OPEN},
* or {@link #TRANSIT_FRAGMENT_CLOSE}
*/
- public abstract FragmentTransaction setTransition(int transit);
+ public abstract FragmentTransaction setTransition(@Transit int transit);
/**
* Set a custom style resource that will be used for resolving transit
* animations.
*/
- public abstract FragmentTransaction setTransitionStyle(int styleRes);
+ public abstract FragmentTransaction setTransitionStyle(@StyleRes int styleRes);
/**
* Add this transaction to the back stack. This means that the transaction
@@ -195,7 +213,7 @@
*
* @param name An optional name for this back stack state, or null.
*/
- public abstract FragmentTransaction addToBackStack(String name);
+ public abstract FragmentTransaction addToBackStack(@Nullable String name);
/**
* Returns true if this FragmentTransaction is allowed to be added to the back
@@ -219,7 +237,7 @@
*
* @param res A string resource containing the title.
*/
- public abstract FragmentTransaction setBreadCrumbTitle(int res);
+ public abstract FragmentTransaction setBreadCrumbTitle(@StringRes int res);
/**
* Like {@link #setBreadCrumbTitle(int)} but taking a raw string; this
@@ -234,7 +252,7 @@
*
* @param res A string resource containing the title.
*/
- public abstract FragmentTransaction setBreadCrumbShortTitle(int res);
+ public abstract FragmentTransaction setBreadCrumbShortTitle(@StringRes int res);
/**
* Like {@link #setBreadCrumbShortTitle(int)} but taking a raw string; this
diff --git a/v4/java/android/support/v4/app/NavUtils.java b/v4/java/android/support/v4/app/NavUtils.java
index ea034be..841bc56 100644
--- a/v4/java/android/support/v4/app/NavUtils.java
+++ b/v4/java/android/support/v4/app/NavUtils.java
@@ -23,6 +23,7 @@
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.support.annotation.Nullable;
import android.support.v4.content.IntentCompat;
import android.util.Log;
@@ -274,6 +275,7 @@
* @return The fully qualified class name of sourceActivity's parent activity or null if
* it was not specified
*/
+ @Nullable
public static String getParentActivityName(Activity sourceActivity) {
try {
return getParentActivityName(sourceActivity, sourceActivity.getComponentName());
@@ -292,6 +294,7 @@
* @return The fully qualified class name of sourceActivity's parent activity or null if
* it was not specified
*/
+ @Nullable
public static String getParentActivityName(Context context, ComponentName componentName)
throws NameNotFoundException {
PackageManager pm = context.getPackageManager();
diff --git a/v4/java/android/support/v4/app/ShareCompat.java b/v4/java/android/support/v4/app/ShareCompat.java
index 52c4b12..87ebc49 100644
--- a/v4/java/android/support/v4/app/ShareCompat.java
+++ b/v4/java/android/support/v4/app/ShareCompat.java
@@ -24,6 +24,7 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
+import android.support.annotation.StringRes;
import android.support.v4.content.IntentCompat;
import android.support.v4.view.MenuItemCompat;
import android.text.Html;
@@ -403,7 +404,7 @@
* @param resId Resource ID of the title string to use
* @return This IntentBuilder for method chaining
*/
- public IntentBuilder setChooserTitle(int resId) {
+ public IntentBuilder setChooserTitle(@StringRes int resId) {
return setChooserTitle(mActivity.getText(resId));
}
diff --git a/v4/java/android/support/v4/text/TextUtilsCompat.java b/v4/java/android/support/v4/text/TextUtilsCompat.java
index 3400866..436d72f 100644
--- a/v4/java/android/support/v4/text/TextUtilsCompat.java
+++ b/v4/java/android/support/v4/text/TextUtilsCompat.java
@@ -16,6 +16,8 @@
package android.support.v4.text;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.view.ViewCompat;
import java.util.Locale;
@@ -27,7 +29,8 @@
* @param s the string to be encoded
* @return the encoded string
*/
- public static String htmlEncode(String s) {
+ @NonNull
+ public static String htmlEncode(@NonNull String s) {
StringBuilder sb = new StringBuilder();
char c;
for (int i = 0; i < s.length(); i++) {
@@ -69,7 +72,7 @@
*
* Be careful: this code will need to be updated when vertical scripts will be supported
*/
- public static int getLayoutDirectionFromLocale(Locale locale) {
+ public static int getLayoutDirectionFromLocale(@Nullable Locale locale) {
if (locale != null && !locale.equals(ROOT)) {
final String scriptSubtag = ICUCompat.getScript(
ICUCompat.addLikelySubtags(locale.toString()));
diff --git a/v4/java/android/support/v4/view/PagerTabStrip.java b/v4/java/android/support/v4/view/PagerTabStrip.java
index 21488b8..834035c 100644
--- a/v4/java/android/support/v4/view/PagerTabStrip.java
+++ b/v4/java/android/support/v4/view/PagerTabStrip.java
@@ -21,6 +21,8 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.support.annotation.ColorRes;
+import android.support.annotation.DrawableRes;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -136,7 +138,7 @@
*
* @param resId Resource ID of a color resource to load
*/
- public void setTabIndicatorColorResource(int resId) {
+ public void setTabIndicatorColorResource(@ColorRes int resId) {
setTabIndicatorColor(getContext().getResources().getColor(resId));
}
@@ -180,7 +182,7 @@
}
@Override
- public void setBackgroundResource(int resId) {
+ public void setBackgroundResource(@DrawableRes int resId) {
super.setBackgroundResource(resId);
if (!mDrawFullUnderlineSet) {
mDrawFullUnderline = resId == 0;
diff --git a/v4/java/android/support/v4/view/ViewCompat.java b/v4/java/android/support/v4/view/ViewCompat.java
index 7f5dba7..cd6e0eb 100644
--- a/v4/java/android/support/v4/view/ViewCompat.java
+++ b/v4/java/android/support/v4/view/ViewCompat.java
@@ -21,17 +21,27 @@
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.support.annotation.IdRes;
+import android.support.annotation.IntDef;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
import android.view.View;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Helper for accessing features in {@link View} introduced after API
* level 4 in a backwards compatible fashion.
*/
public class ViewCompat {
+ /** @hide */
+ @IntDef({OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_IF_CONTENT_SCROLLS})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface OverScroll {}
+
/**
* Always allow a user to over-scroll this view, provided it is a
* view that can scroll.
@@ -51,6 +61,16 @@
private static final long FAKE_FRAME_TIME = 10;
+ /** @hide */
+ @IntDef({
+ IMPORTANT_FOR_ACCESSIBILITY_AUTO,
+ IMPORTANT_FOR_ACCESSIBILITY_YES,
+ IMPORTANT_FOR_ACCESSIBILITY_NO,
+ IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface ImportantForAccessibility {}
+
/**
* Automatically determine whether a view is important for accessibility.
*/
@@ -72,6 +92,15 @@
*/
public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 0x00000004;
+ /** @hide */
+ @IntDef({
+ ACCESSIBILITY_LIVE_REGION_NONE,
+ ACCESSIBILITY_LIVE_REGION_POLITE,
+ ACCESSIBILITY_LIVE_REGION_ASSERTIVE
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface AccessibilityLiveRegion {}
+
/**
* Live region mode specifying that accessibility services should not
* automatically announce changes to this view. This is the default live
@@ -97,6 +126,11 @@
*/
public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 0x00000002;
+ /** @hide */
+ @IntDef({LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYER_TYPE_HARDWARE})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface LayerType {}
+
/**
* Indicates that the view does not have a layer.
*/
@@ -145,6 +179,23 @@
*/
public static final int LAYER_TYPE_HARDWARE = 2;
+ /** @hide */
+ @IntDef({
+ LAYOUT_DIRECTION_LTR,
+ LAYOUT_DIRECTION_RTL,
+ LAYOUT_DIRECTION_INHERIT,
+ LAYOUT_DIRECTION_LOCALE})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface LayoutDirectionMode {}
+
+ /** @hide */
+ @IntDef({
+ LAYOUT_DIRECTION_LTR,
+ LAYOUT_DIRECTION_RTL
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface ResolvedLayoutDirectionMode {}
+
/**
* Horizontal layout direction of this view is from Left to Right.
*/
@@ -605,6 +656,7 @@
* @param v The View against which to invoke the method.
* @return This view's over-scroll mode.
*/
+ @OverScroll
public static int getOverScrollMode(View v) {
return IMPL.getOverScrollMode(v);
}
@@ -621,7 +673,7 @@
* @param v The View against which to invoke the method.
* @param overScrollMode The new over-scroll mode for this view.
*/
- public static void setOverScrollMode(View v, int overScrollMode) {
+ public static void setOverScrollMode(View v, @OverScroll int overScrollMode) {
IMPL.setOverScrollMode(v, overScrollMode);
}
@@ -844,6 +896,7 @@
* @see #IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
* @see #IMPORTANT_FOR_ACCESSIBILITY_AUTO
*/
+ @ImportantForAccessibility
public static int getImportantForAccessibility(View view) {
return IMPL.getImportantForAccessibility(view);
}
@@ -867,7 +920,8 @@
* @see #IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
* @see #IMPORTANT_FOR_ACCESSIBILITY_AUTO
*/
- public static void setImportantForAccessibility(View view, int mode) {
+ public static void setImportantForAccessibility(View view,
+ @ImportantForAccessibility int mode) {
IMPL.setImportantForAccessibility(view, mode);
}
@@ -966,7 +1020,7 @@
* and can be null. It is ignored when the layer type is
* {@link #LAYER_TYPE_NONE}
*/
- public static void setLayerType(View view, int layerType, Paint paint) {
+ public static void setLayerType(View view, @LayerType int layerType, Paint paint) {
IMPL.setLayerType(view, layerType, paint);
}
@@ -986,6 +1040,7 @@
* @see #LAYER_TYPE_SOFTWARE
* @see #LAYER_TYPE_HARDWARE
*/
+ @LayerType
public static int getLayerType(View view) {
return IMPL.getLayerType(view);
}
@@ -1008,7 +1063,7 @@
* @param view The view on which to invoke the corresponding method.
* @param labeledId The labeled view id.
*/
- public static void setLabelFor(View view, int labeledId) {
+ public static void setLabelFor(View view, @IdRes int labeledId) {
IMPL.setLabelFor(view, labeledId);
}
@@ -1056,6 +1111,7 @@
* For compatibility, this will return {@link #LAYOUT_DIRECTION_LTR} if API version
* is lower than Jellybean MR1 (API 17)
*/
+ @ResolvedLayoutDirectionMode
public static int getLayoutDirection(View view) {
return IMPL.getLayoutDirection(view);
}
@@ -1076,7 +1132,7 @@
* proceeds up the parent chain of the view to get the value. If there is no parent, then it
* will return the default {@link #LAYOUT_DIRECTION_LTR}.
*/
- public static void setLayoutDirection(View view, int layoutDirection) {
+ public static void setLayoutDirection(View view, @LayoutDirectionMode int layoutDirection) {
IMPL.setLayoutDirection(view, layoutDirection);
}
@@ -1169,6 +1225,7 @@
*
* @see ViewCompat#setAccessibilityLiveRegion(View, int)
*/
+ @AccessibilityLiveRegion
public int getAccessibilityLiveRegion(View view) {
return IMPL.getAccessibilityLiveRegion(view);
}
@@ -1201,7 +1258,7 @@
* <li>{@link #ACCESSIBILITY_LIVE_REGION_ASSERTIVE}
* </ul>
*/
- public void setAccessibilityLiveRegion(View view, int mode) {
+ public void setAccessibilityLiveRegion(View view, @AccessibilityLiveRegion int mode) {
IMPL.setAccessibilityLiveRegion(view, mode);
}
}
diff --git a/v4/java/android/support/v4/view/ViewPager.java b/v4/java/android/support/v4/view/ViewPager.java
index e90744c..e9fc1a8 100644
--- a/v4/java/android/support/v4/view/ViewPager.java
+++ b/v4/java/android/support/v4/view/ViewPager.java
@@ -28,6 +28,7 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
+import android.support.annotation.DrawableRes;
import android.support.v4.os.ParcelableCompat;
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
import android.support.v4.view.accessibility.AccessibilityEventCompat;
@@ -740,7 +741,7 @@
*
* @param resId Resource ID of a drawable to display between pages
*/
- public void setPageMarginDrawable(int resId) {
+ public void setPageMarginDrawable(@DrawableRes int resId) {
setPageMarginDrawable(getContext().getResources().getDrawable(resId));
}
diff --git a/v4/java/android/support/v4/widget/DrawerLayout.java b/v4/java/android/support/v4/widget/DrawerLayout.java
index c2722b9..ef4573e 100644
--- a/v4/java/android/support/v4/widget/DrawerLayout.java
+++ b/v4/java/android/support/v4/widget/DrawerLayout.java
@@ -27,6 +27,9 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.IntDef;
+import android.support.annotation.Nullable;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.KeyEventCompat;
@@ -44,6 +47,8 @@
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.List;
/**
@@ -74,6 +79,11 @@
public class DrawerLayout extends ViewGroup {
private static final String TAG = "DrawerLayout";
+ /** @hide */
+ @IntDef({STATE_IDLE, STATE_DRAGGING, STATE_SETTLING})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface State {}
+
/**
* Indicates that any drawers are in an idle, settled state. No animation is in progress.
*/
@@ -89,6 +99,11 @@
*/
public static final int STATE_SETTLING = ViewDragHelper.STATE_SETTLING;
+ /** @hide */
+ @IntDef({LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED, LOCK_MODE_LOCKED_OPEN})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface LockMode {}
+
/**
* The drawer is unlocked.
*/
@@ -106,6 +121,12 @@
*/
public static final int LOCK_MODE_LOCKED_OPEN = 2;
+ /** @hide */
+ @IntDef({Gravity.LEFT, Gravity.RIGHT, GravityCompat.START, GravityCompat.END})
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface EdgeGravity {}
+
+
private static final int MIN_DRAWER_MARGIN = 64; // dp
private static final int DEFAULT_SCRIM_COLOR = 0x99000000;
@@ -197,7 +218,7 @@
*
* @param newState The new drawer motion state
*/
- public void onDrawerStateChanged(int newState);
+ public void onDrawerStateChanged(@State int newState);
}
/**
@@ -267,7 +288,7 @@
* @param shadowDrawable Shadow drawable to use at the edge of a drawer
* @param gravity Which drawer the shadow should apply to
*/
- public void setDrawerShadow(Drawable shadowDrawable, int gravity) {
+ public void setDrawerShadow(Drawable shadowDrawable, @EdgeGravity int gravity) {
/*
* TODO Someone someday might want to set more complex drawables here.
* They're probably nuts, but we might want to consider registering callbacks,
@@ -293,7 +314,7 @@
* @param resId Resource id of a shadow drawable to use at the edge of a drawer
* @param gravity Which drawer the shadow should apply to
*/
- public void setDrawerShadow(int resId, int gravity) {
+ public void setDrawerShadow(@DrawableRes int resId, @EdgeGravity int gravity) {
setDrawerShadow(getResources().getDrawable(resId), gravity);
}
@@ -330,7 +351,7 @@
* @param lockMode The new lock mode for the given drawer. One of {@link #LOCK_MODE_UNLOCKED},
* {@link #LOCK_MODE_LOCKED_CLOSED} or {@link #LOCK_MODE_LOCKED_OPEN}.
*/
- public void setDrawerLockMode(int lockMode) {
+ public void setDrawerLockMode(@LockMode int lockMode) {
setDrawerLockMode(lockMode, Gravity.LEFT);
setDrawerLockMode(lockMode, Gravity.RIGHT);
}
@@ -354,7 +375,7 @@
* @see #LOCK_MODE_LOCKED_CLOSED
* @see #LOCK_MODE_LOCKED_OPEN
*/
- public void setDrawerLockMode(int lockMode, int edgeGravity) {
+ public void setDrawerLockMode(@LockMode int lockMode, @EdgeGravity int edgeGravity) {
final int absGravity = GravityCompat.getAbsoluteGravity(edgeGravity,
ViewCompat.getLayoutDirection(this));
if (absGravity == Gravity.LEFT) {
@@ -402,7 +423,7 @@
* @see #LOCK_MODE_LOCKED_CLOSED
* @see #LOCK_MODE_LOCKED_OPEN
*/
- public void setDrawerLockMode(int lockMode, View drawerView) {
+ public void setDrawerLockMode(@LockMode int lockMode, View drawerView) {
if (!isDrawerView(drawerView)) {
throw new IllegalArgumentException("View " + drawerView + " is not a " +
"drawer with appropriate layout_gravity");
@@ -418,7 +439,8 @@
* @return one of {@link #LOCK_MODE_UNLOCKED}, {@link #LOCK_MODE_LOCKED_CLOSED} or
* {@link #LOCK_MODE_LOCKED_OPEN}.
*/
- public int getDrawerLockMode(int edgeGravity) {
+ @LockMode
+ public int getDrawerLockMode(@EdgeGravity int edgeGravity) {
final int absGravity = GravityCompat.getAbsoluteGravity(
edgeGravity, ViewCompat.getLayoutDirection(this));
if (absGravity == Gravity.LEFT) {
@@ -436,6 +458,7 @@
* @return one of {@link #LOCK_MODE_UNLOCKED}, {@link #LOCK_MODE_LOCKED_CLOSED} or
* {@link #LOCK_MODE_LOCKED_OPEN}.
*/
+ @LockMode
public int getDrawerLockMode(View drawerView) {
final int absGravity = getDrawerViewAbsoluteGravity(drawerView);
if (absGravity == Gravity.LEFT) {
@@ -456,7 +479,7 @@
* drawer to set the title for.
* @param title The title for the drawer.
*/
- public void setDrawerTitle(int edgeGravity, CharSequence title) {
+ public void setDrawerTitle(@EdgeGravity int edgeGravity, CharSequence title) {
final int absGravity = GravityCompat.getAbsoluteGravity(
edgeGravity, ViewCompat.getLayoutDirection(this));
if (absGravity == Gravity.LEFT) {
@@ -474,7 +497,8 @@
* @return The title of the drawer, or null if none set.
* @see #setDrawerTitle(int, CharSequence)
*/
- public CharSequence getDrawerTitle(int edgeGravity) {
+ @Nullable
+ public CharSequence getDrawerTitle(@EdgeGravity int edgeGravity) {
final int absGravity = GravityCompat.getAbsoluteGravity(
edgeGravity, ViewCompat.getLayoutDirection(this));
if (absGravity == Gravity.LEFT) {
@@ -489,7 +513,7 @@
* Resolve the shared state of all drawers from the component ViewDragHelpers.
* Should be called whenever a ViewDragHelper's state changes.
*/
- void updateDrawerState(int forGravity, int activeState, View activeDrawer) {
+ void updateDrawerState(int forGravity, @State int activeState, View activeDrawer) {
final int leftState = mLeftDragger.getViewDragState();
final int rightState = mRightDragger.getViewDragState();
@@ -655,7 +679,7 @@
* @param gravity Absolute gravity value
* @return LEFT or RIGHT as appropriate, or a hex string
*/
- static String gravityToString(int gravity) {
+ static String gravityToString(@EdgeGravity int gravity) {
if ((gravity & Gravity.LEFT) == Gravity.LEFT) {
return "LEFT";
}
@@ -1121,7 +1145,7 @@
* @param gravity Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right.
* GravityCompat.START or GravityCompat.END may also be used.
*/
- public void openDrawer(int gravity) {
+ public void openDrawer(@EdgeGravity int gravity) {
final View drawerView = findDrawerWithGravity(gravity);
if (drawerView == null) {
throw new IllegalArgumentException("No drawer view found with gravity " +
@@ -1161,7 +1185,7 @@
* @param gravity Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right.
* GravityCompat.START or GravityCompat.END may also be used.
*/
- public void closeDrawer(int gravity) {
+ public void closeDrawer(@EdgeGravity int gravity) {
final View drawerView = findDrawerWithGravity(gravity);
if (drawerView == null) {
throw new IllegalArgumentException("No drawer view found with gravity " +
@@ -1196,7 +1220,7 @@
* @param drawerGravity Gravity of the drawer to check
* @return true if the given drawer view is in an open state
*/
- public boolean isDrawerOpen(int drawerGravity) {
+ public boolean isDrawerOpen(@EdgeGravity int drawerGravity) {
final View drawerView = findDrawerWithGravity(drawerGravity);
if (drawerView != null) {
return isDrawerOpen(drawerView);
@@ -1221,13 +1245,13 @@
/**
* Check if a given drawer view is currently visible on-screen. The drawer
- * may be only peeking onto the screen, fully extended, or anywhere inbetween.
+ * may be only peeking onto the screen, fully extended, or anywhere in between.
* If there is no drawer with the given gravity this method will return false.
*
* @param drawerGravity Gravity of the drawer to check
* @return true if the given drawer is visible on-screen
*/
- public boolean isDrawerVisible(int drawerGravity) {
+ public boolean isDrawerVisible(@EdgeGravity int drawerGravity) {
final View drawerView = findDrawerWithGravity(drawerGravity);
if (drawerView != null) {
return isDrawerVisible(drawerView);
diff --git a/v4/java/android/support/v4/widget/SlidingPaneLayout.java b/v4/java/android/support/v4/widget/SlidingPaneLayout.java
index 359be44..c11b0fb 100644
--- a/v4/java/android/support/v4/widget/SlidingPaneLayout.java
+++ b/v4/java/android/support/v4/widget/SlidingPaneLayout.java
@@ -29,6 +29,7 @@
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
+import android.support.annotation.DrawableRes;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.ViewCompat;
@@ -1116,7 +1117,7 @@
* @param resId Resource ID of a drawable to use
*/
@Deprecated
- public void setShadowResource(int resId) {
+ public void setShadowResource(@DrawableRes int resId) {
setShadowDrawable(getResources().getDrawable(resId));
}