http://blog.magicer.xyz/2017/...
官方提供了很多特别好用的类或注解,这里说的support annotation
就是特别好的工具,多使用其中的注解,可以规范我们的开发,防止一些不必要的错误。要想使用support annotation
需要手动添加依赖
compile 'com.android.support:support-annotations:25.2.0'
在这里面有几个对我们开发特别有用的注解:
@Nullable
和@NonNull
IntDef
StringDef
一些资源类的注解
Nullable和NonNull
这两个注解还是蛮简单的。字面意思就能看的出来。用于变量,参数和返回值是否为空。
例如
public void foo(@NonNull String content){
}
有这么一个方法,这时候如果我们将参数content
的值传入了一个可能为空的值时,编辑器(AS
)就会有所提示。
IntDef和StringDef
这两个主要是用来解决在Android
中使用enum
效率低的问题。这是官方的一个demo。在使用到enum
的地方,都应该换成IntDef
或StringDef
。
import android.support.annotation.IntDef;
...
public abstract class ActionBar {
...
// Define the list of accepted constants and declare the NavigationMode annotation
@Retention(RetentionPolicy.SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}
// Declare the constants
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;
// Decorate the target methods with the annotation
@NavigationMode
public abstract int getNavigationMode();
// Attach the annotation
public abstract void setNavigationMode(@NavigationMode int mode);
资源类注解
通过自带的几个资源类注解,可以做到在代码中提示我们使用的资源是否正确。作用在参数上。
主要有@StringRes
@DimenRes
@IdRes
@ColorRes
@DrawableRes
@AnimRes
@AttrRes
@LayoutRes
@MenuRes
@RawRes
等 各类资源的检查注解。
例如,在使用@StringRes
之后,会检查该值是不是R.string
的形式。
其他
要想查看更加详细的注解,就查看官方文档吧。官方文档讲的比我清楚明了。这里就是简单提一下,做个小笔记。
值约束注解
IntRange
FloatRange
等,详细看官方文档。这里的代码摘抄自官方文档
public void setAlpha(@IntRange(from=0,to=255) int alpha) { … }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。