android 注解使用

Android开发必备:TBS腾讯浏览服务静态集成完整指南(附Demo下载) 本文详细解析了Android开发中TBS腾讯浏览服务的静态集成方案,通过对比动态集成,深入剖析了其核心原理与适用场景。文章提供了从环境准备、资源获取、项目配置到代码初始化的完整指南,并重点介绍了WebView与文件预览等高级特性的实战应用。针对集成过程中的常见问题,提供了详尽的排查清单与性能调优建议,旨在帮助开发者构建极致稳定、不依赖网络的WebView与文件预览功能。文末附有经过验证的Demo项目可供下载参考。 阅读详情

android中的注解使用

定义

Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的 Annotion对象,然后通过 Annotion对象 来获取注解里面的元数据。

常用注解

@Target

修饰的对象范围,表示作用的范围。可以查看ElementType了解详情。

取值范围
TYPE类、接口
FIELD字段、枚举
METHOD方法
PARAMETER方法形参
CONSTRUCTOR构造方法
LOCAL_VARIABLE局部变量
ANNOTATION_TYPE作用在注解上,即元注解
PACKAGE包
TYPE_PARAMETER类型参数(1.8后)
TYPE_USE使用类型(1.8后)
@Retention

表示注解的生命周期,在什么级别会保留或者遗弃。RetentionPolicy中可查看类型

策略保留有效期间
SOURCE源文件保留编辑期间保留,动态检测,其他不会保留
CLASSclass文件中有效记录在类文件中,不会被虚拟机保留
RUNTIME运行期有效记录在类文件中,虚拟机保留
@Document

表示默认情况下,javadoc 和类似工具将记录带有类型的注释。此类型应用于注释类型的声明,这些声明的注释会影响其客户端对带注释的元素的使用。如果类型声明用记录,则其注释将成为带注释元素的公共API的一部分。

android中注解

android中的注解需要导入

    implementation 'com.android.support:support-annotations:27.0.1'

里面的注解非常多,可以让代码逻辑更加规范。

资源相关
AnimatorRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是动画资源引用(例如{android.R.animator.fade_in})

AnimRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是动画资源引用(例如{@code android.R.anim.fade_in})

AnyRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是任意资源的引用

ArrayRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是数组资源引用(例如{@code android.R.array.phoneTypes})。

BoolRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是布尔资源引用。

ColorRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是颜色资源引用。{@code android.R.color.black}).

DimenRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是尺寸资源引用。{@code android.R.dimen.app_icon_size}).

DrawableRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是可绘制资源引用。{@code android.R.attr.alertDialogIcon}).

FontRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是字体资源引用。{@code android.R.R.font.myfont}).

FractionRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是分数资源引用。

IntegerRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是整数资源引用。{@code android.R.integer.config_shortAnimTime}

InterpolatorRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是插值期资源引用。{@code android.android.R.interpolator.cycle}

LayoutRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是布局资源引用。{@code android.R.layout.activity_main}

MenuRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是菜单资源引用。{@code R.menu.main}

NavigationRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是导航资源引用。{@code R.navigation.flow}

PluralsRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是复数资源引用。

RawRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是原始资源引用。{@code R.raw.movie}

StringRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是字符串资源引用。{@code R.string.ok}

StyleableRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是可样式话资源引用。{@code R.styleable.TextView_text}

StyleRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是样式资源引用。{@code R.styleable.TextAppearance}

TransitionRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是过渡资源引用。

XmlRes

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE
表示期望整数参数,字段或方法的返回值*是XML资源引用。

类型def相关

该类型下的注解有 IntDef 、LongDef和 StringDef 。是google用来代替简单类型枚举的注解。

IntDef

作用域:注解上
表示带有整数类型的带注释元素表示逻辑类型,并且其值应为明确命名的常量之一。如果IntDef#flag()属性设置为true,则可以组合多个常量。
创建新整型注解。

   public static final int NET_4G = 0;
    public static final int NET_5G = 1;
    public static final int NET_WIFE = 2;
    public static final int NET_3G = 3;

    @IntDef({NET_4G, NET_5G, NET_WIFE, NET_3G})
    @Retention(RetentionPolicy.SOURCE)
    public @interface NetStatus {
    }

使用其他非给定类型是会报错的。
在这里插入图片描述

StringDef

作用域:注解上
表示带有字符类型的带注释元素表示逻辑类型,并且其值应为明确命名的常量之一。

LongDef

作用域:注解上
表示带有字符类型的带注释元素表示逻辑类型,并且其值应为明确命名的常量之一。

类型NULL相关
Nullable

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE
表示参数,字段或方法的返回值可以为null。方法调用参数时,这表示该参数可以合法地为null,并且该方法将适当地处理它。通常用于可选参数。

NonNull

作用域:METHOD, PARAMETER, FIELD, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE
表示参数,字段或方法的返回值不能为null。

 private void setTextView(@NonNull String string){
        textView.setText(string);
    }
区间范围相关
IntRange

作用域METHOD,PARAMETER,FIELD,LOCAL_VARIABLE,ANNOTATION_TYPE
表示带注释的元素在给定范围内应为int或long。

 public static void startMain(@Nullable Context context, @IntRange(from = 0,to = 3) int index) {
 		//fragment选中方法,防止越界
        mBottomTab.setCurrentItem(index);
    }
FloatRange

作用域METHOD,PARAMETER,FIELD,LOCAL_VARIABLE,ANNOTATION_TYPE
表示带注释的元素在给定范围内应为float或double。

长度限定相关
Size

作用域:表示带注释的元素应具有给定的大小或长度。通常用来限定数组或者集合的大小,可支持常数大小或者范围。

 public void getLocationInWindow(@Size(2) int[] location) {
       ...
   }
 private void setDateList(@NonNull @Size(min = 1,max = 100) ArrayList dateList){
        ......
    }
权限相关
RequiresApi

作用域:TYPE,METHOD,CONSTRUCTOR,FIELD
表示带注释的元素只能在给定的API级别或更高级别上调用。用来限定或者警告超过预期版本号的api的使用。

  @RequiresApi(16)
    static class TaskStackBuilderApi16Impl extends TaskStackBuilderBaseImpl {
        @Override
        public PendingIntent getPendingIntent(Context context, Intent[] intents, int requestCode,
                int flags, Bundle options) {
            intents[0] = new Intent(intents[0]).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
            return PendingIntent.getActivities(context, requestCode, intents, flags, options);
        }
    }
RequiresPermission

作用域:ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD,PARAMETER
表示带注释的元素需要(或可能需要)一个或多个权限。


    @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
    private void setNewStatus(@NetStatus int type) {
        switch (type) {
            case NET_4G:
                ......
                break;
            case NET_5G:
                ......
                break;
            case NET_WIFE:
                ......
                break;
            case NET_3G:
                ......
                break;
            default:
                break;
        }
    }
RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
    public abstract Location getLastKnownLocation(String provider);
混淆相关
Keep

作用域:PACKAGE,TYPE,ANNOTATION_TYPE,CONSTRUCTOR,METHOD,FIELD
表示在构建时最小化代码时,不应删除带注释的元素。这通常用于仅通过反射访问的方法和类,因此编译器可能认为代码未使用。
当然,这个注释起作用,还需要一定条件:

  • 设置minifyEnabled为true,打开混淆开关。
  • 在proguard-rules.pro配置文件中加入以下规则
-keep,allowobfuscation @interface android.support.annotation.Keep

-keep @android.support.annotation.Keep class *
-keepclassmembers class * {
    @android.support.annotation.Keep *;
}
回调相关
CallSuper

作用域:METHOD
表示任何覆盖方法也应调用父类此方法。是修饰在父类上的,最常见的生命周期。

//fragment中的
 @CallSuper
    public void onResume() {
        mCalled = true;
    }

如果子类不实现就会报错,如图:
在这里插入图片描述

常用相关类
Override

作用域:METHOD
表示方法声明旨在覆盖超类型中的方法声明。如果一个方法带有注释,则该注释类型的编译器必须生成一条错误消息。

Deprecated

作用域:CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE
注释为@Deprecated的程序元素是不鼓励程序员使用的元素,通常是因为这样做很危险,或者是因为存在更好的替代方法。就是方法过时,被抛弃使用了。

TargetApi

作用域:TYPE, METHOD, CONSTRUCTOR, FIELD
用于屏蔽某一新api中才能使用的方法报的lint检查出现的错误。简单来说,@TargetApi是给使用了此注解的方法添加访问权限。

线程相关类
BinderThread

作用域:METHOD,CONSTRUCTOR,TYPE,PARAMETER
表示期望整数参数,字段或方法的返回值要运行在binder线程中。

UiThread

作用域:METHOD,CONSTRUCTOR,TYPE,PARAMETER
表示期望整数参数,字段或方法的返回值要运行在ui线程中。

WorkerThread

作用域:METHOD,CONSTRUCTOR,TYPE,PARAMETER
表示期望整数参数,字段或方法的返回值要运行在worker线程中。

MainThread

作用域:METHOD,CONSTRUCTOR,TYPE,PARAMETER
表示期望整数参数,字段或方法的返回值要运行在主线程中。

AnyThread

作用域:METHOD,CONSTRUCTOR,TYPE,PARAMETER
*表示可以从任何线程调用带注释的方法(例如,它是“线程安全的”。)*如果带注释的元素是一个类,则可以从任何线程调用该类中的所有方法。

自定义注解

使用 @interface 自定义注解时,自动继承了 java.lang.annotation.Annotation 接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface 用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是 基本类型、Class、String、enum)。可以通过 default 来声明参数的默认值。
例子:性能差的findviewbyid
自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface ViewById {
    int valueId() default 0;
}

将注解的类注入

public class ViewByIdImpl {

    public static void injectActivity(Activity activity){
        Class<?> aClass = activity.getClass();
        Field[] fields = aClass.getDeclaredFields();

        for (Field field : fields) {
            ViewById annotation = field.getAnnotation(ViewById.class);
            if(annotation != null){

                View view = activity.findViewById(annotation.valueId());

                field.setAccessible(true);

                try {
                    field.set(activity,view);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
public class TestTwoActivity extends AppCompatActivity {

    @ViewById(valueId = R.id.tv_test_annotations)
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_one);
        //注入
        ViewByIdImpl.injectActivity(this);

        textView.setText("注入生成");
    }
}

在这里插入图片描述

总结

总的来说,注解能帮你优化代码,尤其是多人开发的时候,良好的注解习惯配合注释,使代码更清晰。减少传参异常、角标越界、空指针等bug的出现。而且还能使用apt技术自动化生成代码,比如黄油刀、dragger2等。

手把手教你学 GPU SoC 芯片(9.3)--GPU SOC 功耗和热管理的动态电压和频率调整(DVFS) 通过动态电压和频率调整(DVFS),可以有效地管理GPU SoC的功耗和热管理。合理的DVFS策略不仅可以节省功耗,提高能效,还可以延长设备的使用寿命。 阅读详情

相关推荐

手把手教你用UC3844设计多路输出反激电源(附PCB布局避坑指南)

本文详细介绍了使用UC3844设计多路输出反激电源的实战技巧,包括核心电路设计、变压器参数计算、PCB布局优化及EMI抑制方法。通过实验室实测数据和项目经验,帮助工程师避开常见设计陷阱,提升电源性能和可靠性。特别附赠PCB布局避坑指南,助力高效完成开关电源设计。

weixin_30300225的博客 569

Android textView 获取行数

Android textView 计算行数 今天要做一个功能,给textView赋值,如果大于三行,初始化显示三行多出的用省略号代替,在下面显示查看更多,小于三行,隐藏查看更多,这个需求本来很简单,就是获取行数,做对比,但是问题来了,在初始化的时候发现获取textView的行数得异步获取,而且是在textView渲染完成后,这样就会出现textView显示大于三行,闪一下后显示三行,这就是由于te

u013149352的专栏 1万+

MATLAB/Simulink BLDC电机控制模型搭建:六步换相与速度环实战

无刷直流电机(BLDC)控制是电机驱动领域的核心技术,其六步换相原理通过霍尔信号控制逆变器开关,使定子磁场与转子磁场保持垂直以产生最大转矩。在MATLAB/Simulink中搭建BLDC控制系统,需从电机本体建模入手,结合PWM占空比调节和速度环PI控制器,实现速度闭环与波形观测。该技术广泛应用于电动工具、无人机电调和伺服驱动器等场景。本文详细解析BLDC六步换相逻辑、反电动势建模及Simulink分层设计方法,帮助读者掌握从零搭建完整控制模型的工程实践。

weixin_28273593的博客 208

Android生成代码,Android 注解--(二)利用注解技术在编译期生成代码

上篇文章已经讨论了注解的作用和注解的生命周期,那么具体注解是如何简化我们工作,减少我们编写重复的代码的呢?接下我们将学习使用APT,在编译期生成代码。APT是Annotation-Processing-tool的简写,称为注解处理器,一般来说,自定义注解是在运行时使用的,通过反射获取class上的注解,并进行解析处理,使用apt可以让我们在编译时处理注解(其实不仅仅可以处理注解,而是所有的类信息都...

weixin_31318441的博客 462

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2486

Android开发必备——注解

前言 阅读官方源码以及各类第三方框架时可以发现,很多地方都有注解,作为一名Android程序员,掌握注解属于必不可少的一项技能。 1. 什么是注解 注解是以@符号开头的用来标识如类、字段、方法等的工具。说到注解,就不得不提另外一个概念——注释,两者其实都是做解释的功能,只不过注释是面向开发者,而注解则是针对程序。注解一般需要结合注解处理器或者反射等实现对应的功能,否者将没有实际的意义。两者的区别如下: 定义不同: 注解:英名为Annotation,它是JDK1.5及以后版本引入的一个特性。 与类、接口、枚

Payne丶的博客 5440

Quartz定时任务调度框架中的Misfire策略实战解析

本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。

weixin_29250573的博客 77

android开发教程:如何注释代码

用过的人应该都知道,最明显的就是方便简单。通过使用注释,可以帮助我们自动生成一些重复的代码,减轻我们在项目编译阶段的负担。典型的ButterKnife的本质就是使用Android注释,可以减少我们对view.findViewById的编译,提高我们的开发效率。

m0_70749039的博客 786

手把手教你用scATAC-seq分析拟南芥根尖染色质可及性(附代码实战)

本文详细介绍了使用scATAC-seq技术分析拟南芥根尖染色质可及性的完整流程,涵盖从实验设计、数据质控、细胞分群到差异分析和多组学整合的实战步骤。通过具体的代码示例,帮助植物研究者掌握单细胞表观组学分析的核心方法,揭示细胞异质性和基因调控动态。

weixin_29291185的博客 265

2026年高教社杯数学建模国赛A题解题思路:从物理方程推导到MATLAB高效求解的全流程实战指南

□所有代码能够从头运行到尾,不报错(清除workspace重新跑一遍)□论文中的每个图号、表号、公式编号与正文引用一致□附录中附上核心代码(注意:不是全部代码,而是关键求解器和后处理部分)□支撑材料压缩包包含完整代码、数据文件、README说明□摘要字数严格控制在1000字以内,突出创新点和核心结果□。

YOLO 110

Android环境变量的设置(详细图解版)

查阅了网上很多的资料但是对于环境变量设置介绍的不够详细,可能对于大虾来说是不屑看的,但是对于刚入门的小菜鸟还是比较高深的,呵呵。      因为我的电脑是Win7,就只有Win7的介绍。      首先你已经成功安装Android的SDK。第一步根据图示找到环境变量窗口 第二步

每天进步一点点 19万+

【LAMMPS学习】八、基础知识(2.1)2D模拟

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。LAMMPS 源代码分发的examples目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

荷塘阅色 1251

android anotation,安卓注解Android Annotation

注解主要有以下几个来源:Java中的注解:元注解 位于java.lang.annotation包中 @Documented @Inherited @Repeatable @Retention @Target普通注解位于java.lang包中 @Override@Deprecated @FunctionalInterface(1.8后) @SuppressWarningsAndroid 原生注解:位...

weixin_39834328的博客 548

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【安卓笔记】注解的创建

创建注解的一些基本方法

liosen的博客 469

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android注解篇-各类型注解的意义以及使用场景

前言 注解(Annotation),是源码中特殊的语法元数据,类、方法、变量、参数都可以被注解。利用注解可以标记源码以便编译器为源码生成文档和检查代码,也可以让编译器和注解处理器在编译时根据注解自动生成代码,甚至可以保留到运行时以便改变运行时的行为。 内置注解 @Override 注解用来表明该方法是重写父类方法,编译器会负责检查该方法与父类方法的声明是否一致。 @Deprecate...

Panda_Program的博客 2363

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android编译 注释,安卓编译时注解的应用(一)

Java中的注解是一个非常简洁的东西。使用它可以简化上层代码,让你的业务逻辑变的清晰明了。注解分运行时级别的注解,编译时级别的注解以及源码级别的注解。运行时注解需要用到反射相关的知识,有性能的损耗,今天我们来讲讲编译时的注解,它的作用可以让你的程序在编译过程中通过代码自动生成一些类然后调用,如此就没有反射什么事了,性能也就提升了。Class级别的注解没使用过这里不做探讨了。使用编译时注解很简单,在...

weixin_32953571的博客 321

安卓注解那些事儿

安卓注解那些事儿

心现识变妙莲华 1252

安卓注解

首先什么是注解?@Override就是注解,它的作用是: 1、检查是否正确的重写了父类中的方法。 2、标明代码,这是一个重写的方法。 1、体现在于:检查子类重写的方法名与参数类型是否正确;检查方法private/final/static等不能被重写。实际上@Override对于应用程序并没有实际影响,从它的源码中可以出来。 2、主要是表现出代码的可读性。 Override ...

WJC-keepGoing的博客 595

安卓注解使用介绍

在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行。 在代码文件中使用‘@’字符告诉编译器接下来的是一个注解。注解可以用在类,构造方法,成员变量,方法,参数等的声明中。作用主要是对编译器警告等辅助工具产生影响,如果传递了错误的类型那么编译器就会发出警告,这样就可以在编码和维护的过...

weixin_33810302的博客 466

Android 中注解的使用

> 转载请标明出处: [http://blog.youkuaiyun.com/airsaid/article/details/78017487](http://blog.youkuaiyun.com/airsaid/article/details/78017487) > 本文出自:[周游的博客](http://blog.youkuaiyun.com/airsaid) [TOC] ## 前言 Android Support Library 从

Airsaid 2266

Android Support Annotations :安卓注解快速上手

我们都知道,安卓资源文件都是int类型的ID来保存其引用,通过注解类型,可以让我们在写代码的时候,及时发现参数类型的错误,避免潜在的BUG,如下: 我们通过@LayoutRes指定了参数必须要是R.layout.xxx格式的数据,传数字IDE就会提示我们错误 通过gradle,把注解类型引入到项目中 compile 'com.android.support:support-...

weixin_30289831的博客 108

android的注解,Android中注解的使用

如果你是一名安卓开发者,你也一定听过大名鼎鼎的网络请求框架Retrofit。它将网络请求的方式以注解的形式展现,极大的提高了代码的可读性,同时网络请求集中写在一个interface中提高了代码的可维护性。除此之外,例如Dagger , GreenDao,ButterKnife等等 也是大量运营了注解。为什么这些知名的开源项目如此青睐注解?在注解使用之前,xml被广泛用于描述原数据,但是在使用xml...

weixin_28723109的博客 1632

安卓中利用注解生成java代码

安卓中注解的使用 分为三类 代码运行时通过反射使用 代码编译过程中生成java文件,并且是需要自己调用 代码编译过程中生成嵌套在锚点(注解添加使用的地方)中的代码块,比如方法上有使用这种注解,当该方法执行时,注解起作用。 今天主要介绍第二种,也是使用比较多的,使用注解生成代码(以@BindView 自动findViewById为例) 创建注解 创建New Module module可以...

weixin_41605683的博客 427

android 注解详解

Class

袁震的博客 1687

【安卓笔记】注解反射,优雅的findViewById

结合注解,实现一劳永逸

liosen的博客 407
上一篇: android内存优化-对象池模式和享元模式
下一篇: java8 String、StringBuffer、StringBuilder区别
HUandroid
博客等级 码龄10年 35粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值