日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 自定义注解(Annotation)

發(fā)布時間:2024/4/17 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 自定义注解(Annotation) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
現(xiàn)在市面上很多框架都有使用到注解,比如butterknife庫、EventBus庫、Retrofit庫等等。也是一直好奇他們都是怎么做到的,注解的工作原理是啥。咱們能不能自己去實(shí)現(xiàn)一個簡單的注解呢。注解(Annotation)是JDK1.5新增加功能,注解其實(shí)就是添加在類、變量、方法、參數(shù)等前面的一個修飾符一個標(biāo)記而已(不要把他想的太復(fù)雜)。比如下面的代碼里面@Override、@IdRes就是注解。@Overridepublic <T extends View> T findViewById(@IdRes int id) {return getDelegate().findViewById(id);}上面我們強(qiáng)調(diào)了注解就是一個修飾符一個標(biāo)記而且。但是通過注解能做的事情確是無窮。在代碼編譯或者運(yùn)行的過程中我們可以找到這些 注解,在找到這些注解之后咱們就可以做很多事情了,比如自動做一些代碼處理(賦值、檢測、調(diào)用等等)或者干脆生成一些額外的java文件等。下面會用更加具體的實(shí)例來說明。注解的作用:簡化代碼,提高開發(fā)效率。注意哦,肯定是能提高代碼開發(fā)效率,并不一定能提供程序運(yùn)行效率。接下來我們通過學(xué)習(xí)自定義注解(定義我們自己的注解)來讓大家對注解有一個深刻的認(rèn)識。 一、元注解在我們自定義注解之前我們需要來先了解下元注解。元注解是用來定義其他注解的注解(在自定義注解的時候,需要使用到元注解來定義我們的注解)。java.lang.annotation提供了四種元注解:@Retention、 @Target、@Inherited、@Documented。元注解是用來修飾注解的注解。在自定義注解的時候我們肯定都是要用到元注解的。因?yàn)槲覀冃枰x我們注解的是方法還是變量,注解的存活時間等等。元注解 說明 @Target 表明我們注解可以出現(xiàn)的地方。是一個ElementType枚舉 @Retention 這個注解的的存活時間 @Document 表明注解可以被javadoc此類的工具文檔化 @Inherited 是否允許子類繼承該注解,默認(rèn)為false 1.1、@Target@Target元注解用來表明我們注解可以出現(xiàn)的地方,參數(shù)是一個ElementType類型的數(shù)組,所以@Target可以設(shè)置注解同時出現(xiàn)在多個地方。比如既可以出現(xiàn)來類的前面也可以出現(xiàn)在變量的前面。@Target元注解ElementType枚舉(用來指定注解可以出現(xiàn)的地方): @Target-ElementType類型 說明 ElementType.TYPE 接口、類、枚舉、注解 ElementType.FIELD 字段、枚舉的常量 ElementType.METHOD 方法 ElementType.PARAMETER 方法參數(shù) ElementType.CONSTRUCTOR 構(gòu)造函數(shù) ElementType.LOCAL_VARIABLE 局部變量 ElementType.ANNOTATION_TYPE 注解 ElementType.PACKAGE 包 1.2、@Retention@Retention表示需要在什么級別保存該注釋信息,用于描述注解的生命周期(即:被描述的注解在什么范圍內(nèi)有效)。參數(shù)是RetentionPolicy枚舉對象。RetentionPolicy的枚舉類型有(默認(rèn)值為CLASS.): @Retention-RetentionPolicy類型 說明 RetentionPolicy.SOURCE 注解只保留在源文件,當(dāng)Java文件編譯成class文件的時候,注解被遺棄 RetentionPolicy.CLASS 注解被保留到class文件,但jvm加載class文件時候被遺棄,這是默認(rèn)的生命周期 RetentionPolicy.RUNTIME 注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在SOURCE < CLASS < RUNTIME,前者能作用的地方后者一定也能作用.1.3、@Document@Document表明我們標(biāo)記的注解可以被javadoc此類的工具文檔化。 1.4、@Inherited@Inherited表明我們標(biāo)記的注解是被繼承的。比如,如果一個父類使用了@Inherited修飾的注解,則允許子類繼承該父類的注解。 二、自定義注解 2.1、自定義運(yùn)行時注解運(yùn)行時注解:在代碼運(yùn)行的過程中通過反射機(jī)制找到我們自定義的注解,然后做相應(yīng)的事情。反射:對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性。自定義運(yùn)行是注解大的方面分為兩步:一個是申明注解、第二個是解析注解。 2.1.1、申明注解申明注解步驟:通過@Retention(RetentionPolicy.RUNTIME)元注解確定我們注解是在運(yùn)行的時候使用。通過@Target確定我們注解是作用在什么上面的(變量、函數(shù)、類等)。確定我們注解需要的參數(shù)。比如下面一段代碼我們聲明了一個作用在變量上的BindString運(yùn)行時注解。@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface BindString {int value();}2.1.2、注解解析運(yùn)行時注解的解析我們簡單的分為三個步驟:找到類對應(yīng)的所有屬性或者方法(至于是找類的屬性還是方法就要看我自定義的注解是定義方法上還是屬性上了)。找到添加了我們注解的屬性或者方法。做我們注解需要自定義的一些操作。2.1.2.1、獲取類的屬性和方法既然注解是我們自定義的,我肯定事先會確定我們注解是加在屬性上的還是加在方法上的。通過Class對象我們就可以很容易的獲取到當(dāng)前類里面所有的方法和屬性了:Class類里面常用方法介紹(這里我們不僅僅介紹了獲取屬性和方法的,還介紹了一些其他Class里面常用的方法)/*** 包名加類名*/public String getName();/*** 類名*/public String getSimpleName();/*** 返回當(dāng)前類和父類層次的public構(gòu)造方法*/public Constructor<?>[] getConstructors();/*** 返回當(dāng)前類所有的構(gòu)造方法(public、private和protected)* 不包括父類*/public Constructor<?>[] getDeclaredConstructors();/*** 返回當(dāng)前類所有public的字段,包括父類*/public Field[] getFields();/*** 返回當(dāng)前類所有申明的字段,即包括public、private和protected,* 不包括父類*/public native Field[] getDeclaredFields();/*** 返回當(dāng)前類所有public的方法,包括父類*/public Method[] getMethods();/*** 返回當(dāng)前類所有的方法,即包括public、private和protected,* 不包括父類*/public Method[] getDeclaredMethods();/*** 獲取局部或匿名內(nèi)部類在定義時所在的方法*/public Method getEnclosingMethod();/*** 獲取當(dāng)前類的包*/public Package getPackage();/*** 獲取當(dāng)前類的包名*/public String getPackageName$();/*** 獲取當(dāng)前類的直接超類的 Type*/public Type getGenericSuperclass();/*** 返回當(dāng)前類直接實(shí)現(xiàn)的接口.不包含泛型參數(shù)信息*/public Class<?>[] getInterfaces();/*** 返回當(dāng)前類的修飾符,public,private,protected*/public int getModifiers();類里面每個屬性對應(yīng)一個對象Field,每個方法對應(yīng)一個對象Method。 2.1.2.2、找到添加注解的屬性或者方法上面說道每個屬性對應(yīng)Field,每個方法對應(yīng)Method。而且Field和Method都實(shí)現(xiàn)了AnnotatedElement接口。都有AnnotatedElement接了我們就可以很容易的找到添加了我們指定注解的方法或者屬性了。AnnotatedElement接口常用方法如下:/*** 指定類型的注釋是否存在于此元素上*/default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {return getAnnotation(annotationClass) != null;}/*** 返回該元素上存在的指定類型的注解*/<T extends Annotation> T getAnnotation(Class<T> annotationClass);/*** 返回該元素上存在的所有注解*/Annotation[] getAnnotations();/*** 返回該元素指定類型的注解*/default <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass) {return AnnotatedElements.getDirectOrIndirectAnnotationsByType(this, annotationClass);}/*** 返回直接存在與該元素上的所有注釋(父類里面的不算)*/default <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass) {Objects.requireNonNull(annotationClass);// Loop over all directly-present annotations looking for a matching onefor (Annotation annotation : getDeclaredAnnotations()) {if (annotationClass.equals(annotation.annotationType())) {// More robust to do a dynamic cast at runtime instead// of compile-time only.return annotationClass.cast(annotation);}}return null;}/*** 返回直接存在該元素岸上某類型的注釋*/default <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass) {return AnnotatedElements.getDirectOrIndirectAnnotationsByType(this, annotationClass);}/*** 返回直接存在與該元素上的所有注釋*/Annotation[] getDeclaredAnnotations();2.1.2.3、做自定義注解需要做的事情添加了我們注解的屬性或者方法已經(jīng)拿到了,之后要做的就是自定義注解自定義的一些事情了。比如在某些特定條件下自動去執(zhí)行我們添加注解的方法。下面我們也會用兩個具體的實(shí)例來說明。 2.1.3、運(yùn)行時注解實(shí)例我們通過兩個簡單的實(shí)例來看下自定義運(yùn)行時注解是怎么操作的。 2.1.3.1、通過注解自動創(chuàng)建對象代碼過程中,我們可能經(jīng)常會犯這樣的錯誤,定義了一個對象,但是經(jīng)常忘了創(chuàng)建對象。跑出空指針異常。接下來我們通過自定義一個AutoWired注解來自動去幫我們創(chuàng)建對象。AutoWired注解的聲,指定注解是在變量上使用,并且在運(yùn)行時有效。@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface AutoWired {}AutoWired注解的解析,找到AutoWired注解的變量,創(chuàng)建對象,在吧對象賦值給AutoWired指定的那個變量。public class AutoWiredProcess {public static void bind(final Object object) {Class parentClass = object.getClass();Field[] fields = parentClass.getFields();for (final Field field : fields) {AutoWired autoWiredAnnotation = field.getAnnotation(AutoWired.class);if (autoWiredAnnotation != null) {field.setAccessible(true);try {Class<?> autoCreateClass = field.getType();Constructor autoCreateConstructor = autoCreateClass.getConstructor();field.set(object, autoCreateConstructor.newInstance());} catch (NoSuchMethodException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}}}AutoWired注解的使用,在onCrate()方法里面調(diào)用了AutoWiredProcess.bind(this);來解析注解。這樣在運(yùn)行的時候就會自動去創(chuàng)建UserInfo對象。public class MainActivity extends AppCompatActivity {//自動創(chuàng)建對象,不用我們?nèi)ew UserInfo()了 @AutoWiredUserInfo mUserInfo;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);AutoWiredProcess.bind(this);}}2.1.3.2、通過注解自動findViewById()我們也來簡單的來實(shí)現(xiàn)一個類似Butterknife 庫里面自動綁定View的一個功能。不用在每個View都要去寫findViewById來找到這個View了。聲明BindView注解,而且規(guī)定需要一個int參數(shù)。int參數(shù)代表View對應(yīng)的id@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface BindView {int value(); }解析BindView注解,通過findViewById找到VIew,在把View賦值給BindView注解指向的變量。public class ButterKnifeProcess {/*** 綁定Activity*/public static void bind(final Activity activity) {Class annotationParent = activity.getClass();Field[] fields = annotationParent.getDeclaredFields();Method[] methods = annotationParent.getDeclaredMethods();// OnClick// 找到類里面所有的方法for (final Method method : methods) {//找到添加了OnClick注解的方法OnClick clickMethod = method.getAnnotation(OnClick.class);if (clickMethod != null && clickMethod.value().length != 0) {for (int id : clickMethod.value()) {final View view = activity.findViewById(id);view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {try {method.invoke(activity, view);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}});}}}}}使用BindView注解,onCreate里面調(diào)用了ButterKnifeProcess.bind(this);來解析注解。public class MainActivity extends AppCompatActivity {//自動綁定view @BindView(R.id.text_abstract_processor)TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnifeProcess.bind(this);} }2.2、自定義編譯時注解編譯時注解就是在編譯的過程中用一個javac注解處理器來掃描到我們自定義的注解,生成我們需要的一些文件(通常是java文件)。自定義編譯時注解的步驟: 1. 聲明注解。 2. 編寫注解處理器。 3. 生成文件(通常是JAVA文件)。第二步和第三步其實(shí)是柔和在一起的。我這里為了清晰一點(diǎn)就把他們獨(dú)立開來了。2.2.1、聲明注解編譯時注解的聲明和運(yùn)行時注解的聲明一樣也是三步:通過@Retention(RetentionPolicy.TYPE)元注解確定我們注解是在編譯的時候使用。通過@Target確定我們注解是作用在什么上面的(變量、函數(shù)、類等)。確定我們注解需要的參數(shù)。比如下面的代碼我們自定義了一個作用在類上的編譯時注解Factory,并且這個注解是需要兩個參數(shù)的,一個是Class類型,一個是String類型。@Target({ElementType.TYPE}) @Retention(RetentionPolicy.CLASS) public @interface Factory {Class type();String id(); }2.2.2、編寫注解處理器和運(yùn)行時注解的解析不一樣,編譯時注解的解析需要我們自己去實(shí)現(xiàn)一個注解處理器。注解處理器(Annotation Processor)是javac的一個工具,它用來在編譯時掃描和處理注解(Annotation)。一個注解的注解處理器,以Java代碼(或者編譯過的字節(jié)碼)作為輸入,生成文件(通常是.java文件)作為輸出。而且這些生成的Java文件同咱們手動編寫的Java源代碼一樣可以調(diào)用。(注意:不能修改已經(jīng)存在的java文件代碼)。注解處理器所做的工作,就是在代碼編譯的過程中,找到我們指定的注解。然后讓我們更加自己特定的邏輯做出相應(yīng)的處理(通常是生成JAVA文件)。注解處理器的寫法有固定套路的,兩步:注冊注解處理器(這個注解器就是我們第二步自定義的類)。自定義注解處理器類繼承AbstractProcessor。2.2.2.1、注冊注解處理器打包注解處理器的時候需要一個特殊的文件 javax.annotation.processing.Processor 在 META-INF/services 路徑下。在javax.annotation.processing.Processor文件里面寫上我們自定義注解處理器的全稱(包加類的名字)如果有多個注解處理器換行寫入就可以。偉大的google為了方便我們注冊注解處理器。給提供了一個注冊處理器的庫 @AutoService(Processor.class)的注解來簡化我們的操作。我們只需要在我們自定義的注解處理器類前面加上google的這個注解,在打包的時候就會自動生成javax.annotation.processing.Processor文件,寫入相的信息。不需要我們手動去創(chuàng)建。當(dāng)然了如果你想使用google的這個注解處理器的庫,必須加上下面的依賴。compile 'com.google.auto.service:auto-service:1.0-rc3'1比如下面的這段代碼就使用上了google提供的這個注解器處理庫,會自動注冊注解處理器。@AutoService(Processor.class) public class FactoryProcessor extends AbstractProcessor {...}2.2.2.2、自定義注解處理器類自定義的注解處理器類一定要繼承AbstractProcessor,否則找不到我們需要的注解。在這個類里面找到我們需要的注解。做出相應(yīng)的處理。關(guān)于AbstractProcessor里面的一些函數(shù)我們也做一個簡單的介紹。/*** 每個Annotation Processor必須有一個空的構(gòu)造函數(shù)。* 編譯期間,init()會自動被注解處理工具調(diào)用,并傳入ProcessingEnvironment參數(shù),* 通過該參數(shù)可以獲取到很多有用的工具類(Element,Filer,Messager等)*/@Overridepublic synchronized void init(ProcessingEnvironment processingEnvironment) {super.init(processingEnvironment);}/*** 用于指定自定義注解處理器(Annotation Processor)是注冊給哪些注解的(Annotation),* 注解(Annotation)指定必須是完整的包名+類名*/@Overridepublic Set<String> getSupportedAnnotationTypes() {return super.getSupportedAnnotationTypes();}/*** 用于指定你的java版本,一般返回:SourceVersion.latestSupported()*/@Overridepublic SourceVersion getSupportedSourceVersion() {return SourceVersion.latestSupported();}/*** Annotation Processor掃描出的結(jié)果會存儲進(jìn)roundEnvironment中,可以在這里獲取到注解內(nèi)容,編寫你的操作邏輯。* 注意:process()函數(shù)中不能直接進(jìn)行異常拋出,否則程序會異常崩潰*/@Overridepublic boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {return false;}注解處理器的核心是process()方法(需要重寫AbstractProcessor類的該方法),而process()方法的核心是Element元素。Element 代表程序的元素,在注解處理過程中,編譯器會掃描所有的Java源文件,并將源碼中的每一個部分都看作特定類型的Element。它可以代表包、類、接口、方法、字段等多種元素種類。所有Element肯定是有好幾個子類。如下所示。 Element子類 解釋 TypeElement 類或接口元素 VariableElement 字段、enum常量、方法或構(gòu)造方法參數(shù)、局部變量或異常參數(shù)元素 ExecutableElement 類或接口的方法、構(gòu)造方法,或者注解類型元素 PackageElement 包元素 TypeParameterElement 類、接口、方法或構(gòu)造方法元素的泛型參數(shù)關(guān)于Element類里面的方法我們也做一個簡單的介紹:/*** 返回此元素定義的類型,int,long這些*/TypeMirror asType();/*** 返回此元素的種類:包、類、接口、方法、字段*/ElementKind getKind();/*** 返回此元素的修飾符:public、private、protected*/Set<Modifier> getModifiers();/*** 返回此元素的簡單名稱(類名)*/Name getSimpleName();/*** 返回封裝此元素的最里層元素。* 如果此元素的聲明在詞法上直接封裝在另一個元素的聲明中,則返回那個封裝元素;* 如果此元素是頂層類型,則返回它的包;* 如果此元素是一個包,則返回 null;* 如果此元素是一個泛型參數(shù),則返回 null.*/Element getEnclosingElement();/*** 返回此元素直接封裝的子元素*/List<? extends Element> getEnclosedElements();/*** 返回直接存在于此元素上的注解* 要獲得繼承的注解,可使用 getAllAnnotationMirrors*/List<? extends AnnotationMirror> getAnnotationMirrors();/*** 返回此元素上存在的指定類型的注解*/<A extends Annotation> A getAnnotation(Class<A> var1);關(guān)于TypeElement、VariableElement、ExecutableElement、PackageElement、TypeParameterElement每個類特有的方法我們這里就沒有介紹了,大家可以到相應(yīng)的源碼文件里面去看一看。自定義處理器的過程中我們除了要了解Element類和他的子類的用法,還有四個幫助類也是需要我們了解的。Elements、Types、Filer、Messager。 注解解析器幫助類 解釋 Elements 一個用來處理Element的工具類 Types 一個用來處理TypeMirror的工具類 Filer 用于創(chuàng)建文件(比如創(chuàng)建class文件) Messager 用于輸出,類似printf函數(shù)這四個幫助類都可以在init()函數(shù)里面通過ProcessingEnvironment獲取到。類似如下的代碼獲取@AutoService(Processor.class) public class FactoryProcessor extends AbstractProcessor {/*** 用來處理TypeMirror的工具類*/private Types mTypeUtils;/*** 用于創(chuàng)建文件*/private Filer mFiler;/*** 用于打印信息*/private Messager mMessager;.../*** 獲取到Types、Filer、Messager、Elements*/@Overridepublic synchronized void init(ProcessingEnvironment processingEnvironment) {super.init(processingEnvironment);mTypeUtils = processingEnvironment.getTypeUtils();mFiler = processingEnvironment.getFiler();mMessager = processingEnvironment.getMessager();...}...}2.2.3、生成文件生成文件,通常是生成一個java文件。直接調(diào)用幫助類Filer的createSourceFile()函數(shù)就可以創(chuàng)建一個java文件。之后就是在這個java文件里面寫入我們需要的內(nèi)容了。為了提高大家的開發(fā)效率推薦兩個寫java源文件的開源庫FileWriter和JavaPoet。兩個庫用起來也很簡單,這里我們就不深入進(jìn)去了。生成文件這一部分的內(nèi)容非常的簡答。具體可以參考我們下編譯時注解實(shí)例。JavaWrite是JavaPoet增強(qiáng)版。2.2.4、編譯時注解實(shí)例從網(wǎng)上找了一個非常全面自定義編譯時注解的例子。例子來源于 https://blog.csdn.net/github_35180164/article/details/52055994 通過自定義注解實(shí)現(xiàn)工廠模式。每個工廠模式通常都會有一個相應(yīng)的Factory的幫助類來選擇具體的工廠類,我們現(xiàn)在就想通過編譯時注解來自動生成這個Factory的幫助類,不用我們?nèi)ナ謩泳帉懥恕?/span> Peple抽象類public abstract class People {public abstract String getName();public abstract int getAge();public abstract int getSex();}Male類實(shí)現(xiàn)了People類,并且添加了@Factory注解@Factory(id = "Male", type = People.class) public class Male extends People{@Overridepublic String getName() {return "男生";}@Overridepublic int getAge() {return 28;}@Overridepublic int getSex() {return 0;} }Female類實(shí)現(xiàn)了People類,并且添加了@Factory注解@Factory(id = "Female", type = People.class) public class Female extends People {@Overridepublic String getName() {return "女生";}@Overridepublic int getAge() {return 27;}@Overridepublic int getSex() {return 1;} }根據(jù)上面添加的注解,我們會去自動生成一個PeopleFactory類,而且里面的內(nèi)容也編譯的時候自動生成的,內(nèi)容如下。public class PeopleFactory {public People create(String id) {if (id == null) {throw new IllegalArgumentException("id is null!");}if ("Female".equals(id)) {return new com.tuacy.annotationlearning.annotation.abstractprocessor.Female();}if ("Male".equals(id)) {return new com.tuacy.annotationlearning.annotation.abstractprocessor.Male();}throw new IllegalArgumentException("Unknown id = " + id);} }為了實(shí)現(xiàn)上述功能,我們在Android Studio里面新建一個project。然后再新建一個annotationprocess的module,新建module的時候選擇Java Library。在annotationprocess里面寫我們注解的申明和注解的處理。先申明一個Factory的注解@Target(ElementType.TYPE) @Retention(RetentionPolicy.CLASS) public @interface Factory {/*** 工廠的名字*/Class type();/*** 用來表示生成哪個對象的唯一id*/String id();}在自定義一個FactoryProcessor注解處理器繼承AbstractProcessor。FactoryProcessor代碼里面的內(nèi)容比較多這里我就不粘貼出來了。無非就是找到我們自定義的注解,然后做一些相應(yīng)的判斷,最后生成java文件代碼。相應(yīng)的代碼大家可以在下面給出的DEMO里面看到,DEMO里面的注釋備注寫的也非常詳細(xì)。生成JAVA文件使用的是JavaWriter庫。最后我們把a(bǔ)nnotationprocess module里面的代碼打成jar包放到我們需要的工程里面去(同時把javawriter-2.5.1.jar也拷貝進(jìn)去)。使用就和我們上面說的People工廠一樣使用就OK了。本文DEMO下載地址關(guān)于自定義注解的內(nèi)容,我們就說的就這么多,希望能給大家起到一個拋磚引玉的作用,如果大家對DEMO里面的代碼有什么疑問歡迎留言指出。

?

轉(zhuǎn)載于:https://www.cnblogs.com/Free-Thinker/p/10400787.html

總結(jié)

以上是生活随笔為你收集整理的Android 自定义注解(Annotation)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

激情五月婷婷 | 六月丁香激情网 | 欧美久久影院 | www.香蕉 | 中文字幕一区二区三区在线观看 | 国产福利一区二区在线 | 久草在线视频资源 | 免费特级黄毛片 | 99视频在线 | 播五月综合 | 亚洲精品综合在线 | 久草电影在线 | 久久视频免费看 | 久99久在线视频 | 久草在线高清 | 九九日韩| 欧美作爱视频 | 九九热视频在线免费观看 | 国产一级一级国产 | 久久一区国产 | 2019免费中文字幕 | 国产91大片 | 97国产大学生情侣酒店的特点 | 日韩专区av | 在线视频一二区 | 午夜久久成人 | 97高清免费视频 | 欧美日韩精 | 国产精品一区专区欧美日韩 | 色视频国产直接看 | 久久免费视频播放 | 日本公乱妇视频 | 在线视频日韩精品 | 在线国产99 | 91 中文字幕| av成人动漫 | 亚洲女在线 | 亚洲国产成人久久 | 亚洲成av片人久久久 | 免费国产黄线在线观看视频 | 久久免费精品视频 | 日韩欧美国产激情在线播放 | 国产精品久久久久久五月尺 | 天堂中文在线视频 | 久久久91精品国产一区二区精品 | 日韩久久久久久 | 精品国产美女在线 | 国产精品系列在线 | 91少妇精拍在线播放 | 中文一二区 | 蜜臀av性久久久久蜜臀av | 久久99久久99精品免观看软件 | 国产在线一区二区三区播放 | 久青草影院 | 91免费看片黄 | 永久免费精品视频 | 92av视频| 黄色免费网站大全 | 日本天天色 | 久久精品小视频 | 国产成人专区 | 亚洲资源在线网 | 超碰97中文| 欧美亚洲国产精品久久高清浪潮 | 精品久久久久久久 | 天堂中文在线播放 | 天天综合区 | 91在线视频一区 | 久久久久久亚洲精品 | av片一区 | 天天操天天摸天天爽 | 国产精品资源在线观看 | 一级免费看| 99色在线观看视频 | 亚洲视频久久久久 | 亚洲精品在线观看中文字幕 | 天天拍夜夜拍 | 操操色 | 亚洲aⅴ在线观看 | 中文字幕在线视频一区 | 亚洲高清视频在线 | 国产精品成人自拍 | 黄色av电影网 | 六月婷色 | av 一区二区三区四区 | 在线观看精品一区 | av不卡网站| 制服丝袜在线91 | 久久国产精品一国产精品 | 又粗又长又大又爽又黄少妇毛片 | 中文字幕一区二区三区在线视频 | 国产原厂视频在线观看 | 亚洲人成免费网站 | 99中文字幕在线观看 | 欧美日韩国产一二三区 | 五月香视频在线观看 | 成人在线免费观看视视频 | 91视视频在线直接观看在线看网页在线看 | 国产精品精品国产 | 日韩高清在线一区 | 久热免费在线 | 天天躁天天操 | 人人插人人看 | 久草青青在线观看 | 欧美另类高清 | 亚洲男模gay裸体gay | 欧美一级视频免费 | 丁香婷婷激情 | 黄色毛片一级 | 久久国产免 | 日本中文字幕网站 | 久久久久国产成人免费精品免费 | av黄色在线观看 | 精品久久久久_ | 综合激情婷婷 | 二区三区在线视频 | 日韩欧美电影在线 | 在线观看亚洲免费视频 | 国产精品精品久久久久久 | 中文字幕av在线 | 久视频在线 | 日韩av片在线 | 欧美性做爰猛烈叫床潮 | 欧美精品在线一区二区 | 久久人人爽人人爽人人片 | 中文字幕精品www乱入免费视频 | 欧美一级视频免费看 | 亚洲成人免费 | 精品美女久久久久久免费 | 国产小视频你懂的 | 一区二区视频欧美 | 国产成人久久久久 | 国产精品福利小视频 | 婷香五月| 探花视频在线观看免费 | 国产成人精品久久久久 | 96亚洲精品久久 | 精品久久久一区二区 | 亚洲国产偷 | 中文字幕高清视频 | 亚洲四虎 | 超碰97国产在线 | 精品久久美女 | 国产午夜精品久久久久久久久久 | 国产一区欧美在线 | 久草免费福利在线观看 | 成人在线免费av | 人人插人人爱 | 96久久久| v片在线播放 | 国产人成在线观看 | 国产精品久久久久久久免费大片 | 美女网站黄免费 | 精品极品在线 | 国产一区高清在线 | 狠色狠色综合久久 | 国产韩国精品一区二区三区 | av免费在线网 | 国产白浆视频 | 就要色综合 | 九九热av | 国产手机在线视频 | 91精选 | 国产精品久久久久久妇 | 成人精品福利 | 中文字幕免费久久 | 成人精品一区二区三区中文字幕 | 中文字幕在线观看1 | 91网站免费观看 | 91中文在线视频 | 久久www免费视频 | 国产又粗又硬又长又爽的视频 | 久久视频这里有精品 | 激情五月综合网 | 欧美亚洲另类在线视频 | 亚洲天天看 | 国产精品入口久久 | 97视频人人澡人人爽 | 欧洲精品在线视频 | 中中文字幕av | 激情av在线播放 | 国产偷国产偷亚洲清高 | 91精品国产成人 | 色网站中文字幕 | 国产成人福利在线 | 人人插人人爱 | 热久久国产 | 特级毛片网站 | 91色蜜桃| 亚洲精品午夜久久久久久久久久久 | 日本高清久久久 | 草久在线视频 | 亚洲视频1区2区 | 在线观看麻豆av | 国产黄色高清 | 激情开心色 | 91在线操| 少妇精品久久久一区二区免费 | 香蕉视频一级 | 国产一区二区在线观看视频 | 男女视频久久久 | 蜜臀久久99精品久久久无需会员 | 五月婷婷,六月丁香 | 欧美aaa大片| 18国产精品福利片久久婷 | 欧美在线91 | 国内精品在线观看视频 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 黄色av一区 | 狠狠狠干 | 欧美一区二区三区在线看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 精品久久久久一区二区国产 | 91大神精品视频在线观看 | 国产精品剧情 | 91香蕉视频污在线 | 在线观看福利网站 | 亚洲国产网站 | 欧美伦理一区 | 亚洲免费av观看 | 国产一级在线免费观看 | 国产成人精品一区二区在线观看 | 97精品久久人人爽人人爽 | 久久最新| 97超碰网 | 欧美一级性生活 | 婷婷色亚洲 | 久久视频精品在线观看 | www.久久免费视频 | 精品电影一区二区 | 国产区精品在线 | 欧美大片aaa| 国产黄色一级大片 | 日本韩国精品一区二区在线观看 | 亚洲精品乱码久久久久久久久久 | 国产午夜精品免费一区二区三区视频 | 2019中文字幕网站 | 日韩免费观看av | 日韩午夜av| 国产成人综合图片 | 婷婷爱五月天 | 欧美成人xxx| 久碰视频在线观看 | 日本午夜免费福利视频 | 天天干天天碰 | av网站免费在线 | 国产精成人品免费观看 | a级成人毛片 | 国产精品都在这里 | 天天操天天添 | 美女网站色免费 | 成人午夜精品 | 四虎天堂 | 天天色天天骑天天射 | www.av在线.com| 久久麻豆视频 | 激情欧美一区二区免费视频 | 国产1区在线观看 | 国产精久久| 天天干天天在线 | 日韩久久视频 | 狠狠干狠狠艹 | 久久国产精彩视频 | 最近乱久中文字幕 | 亚洲成人影音 | 日日夜夜综合 | 日韩av中文在线观看 | 国产一区二区三区免费视频 | 美女很黄免费网站 | 久久国产片 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲一二三在线 | 成年人免费在线 | 亚洲天堂色婷婷 | 五月天久久久 | 69亚洲乱 | 久久综合九色 | 天天激情在线 | 91在线精品播放 | 日日夜夜精品免费 | 亚洲精品国产精品久久99热 | 丰满少妇高潮在线观看 | 日韩精品一区二区免费 | 日韩在线观看第一页 | 国产精品手机在线播放 | 中文字幕中文字幕在线中文字幕三区 | 久香蕉 | 五月天丁香视频 | 国产日韩精品视频 | 欧美在线观看视频一区二区 | 午夜美女av | 99精品黄色片免费大全 | 欧美一级性生活片 | 日韩欧美电影在线 | 欧美午夜a| 国产一级特黄毛片在线毛片 | 国产自产在线视频 | 美女国产在线 | 久久久91精品国产一区二区精品 | av不卡在线看 | 99综合视频| 久久看片网 | 中文字幕超清在线免费 | av免费网| 日韩欧美一区二区不卡 | av在线影视 | 国产成人综| 综合久久久久久久久 | 亚洲精品videossex少妇 | 97人人爽人人 | 中文字幕在线观看三区 | 最近更新好看的中文字幕 | 久久久精品久久日韩一区综合 | 亚洲欧洲视频 | 亚洲成人动漫在线观看 | 欧美精品一区二区免费 | 人人澡人人澡人人 | 91日韩在线视频 | 人人添人人澡人人澡人人人爽 | 日韩日韩日韩日韩 | 91视频88av | 五月婷网 | 国产精品刺激对白麻豆99 | 日韩影视大全 | 国产伦精品一区二区三区无广告 | 欧美日产在线观看 | 西西4444www大胆无视频 | 欧美性黄网官网 | 婷婷在线免费视频 | 亚洲区另类春色综合小说 | 午夜国产福利在线 | 国产精品精品国产 | 日韩欧美高清不卡 | 久久久精品国产一区二区电影四季 | 一区二精品 | 日韩中文字幕免费 | 亚洲国产综合在线 | 亚洲乱码在线 | 国产做a爱一级久久 | 亚洲国产精品第一区二区 | 91传媒激情理伦片 | 久久综合九色九九 | 欧美91片 | 国产成人在线播放 | 久久韩国免费视频 | 久久久久蜜桃 | 亚洲不卡123 | 国产视频日韩视频欧美视频 | 91精品久久久久久 | 国产精品中文 | 成年人免费观看国产 | 国产一级不卡视频 | 亚洲精品久 | 91麻豆免费看 | 国产高清在线观看 | 久久人人精| 99视频这里有精品 | 日韩免费视频在线观看 | 免费看亚洲毛片 | 91视频88av| 在线播放日韩av | 综合色综合色 | 亚洲精品456在线播放第一页 | 国产精品免费av | 中文字幕 国产 一区 | 国产a级免费 | 欧美黑人xxxx猛性大交 | 久久久精品在线观看 | 亚洲日本黄色 | 日韩精品在线免费观看 | 国产一区二区三区视频在线 | 蜜桃视频在线观看一区 | 国产一线二线三线性视频 | 久久综合色婷婷 | 久久影视中文字幕 | 深爱激情五月综合 | 精品久久久亚洲 | 日本不卡一区二区三区在线观看 | 欧美精品二 | 亚洲高清视频在线 | 欧美在线91 | 中文字幕在线免费观看视频 | 日韩激情第一页 | 狠狠色免费 | 热久久在线视频 | 亚洲最新毛片 | 欧洲精品码一区二区三区免费看 | 国产精品成人在线 | 国产黄色片免费观看 | 黄色软件视频网站 | 91视频久久| 亚洲精品国产欧美在线观看 | 日日干夜夜爱 | 999国产在线 | 丁香六月天婷婷 | 国产高清久久 | 欧美天堂久久 | 九七人人干| 亚洲久草视频 | 欧美激情视频一区二区三区 | 国产一级a毛片视频爆浆 | 亚洲第一成网站 | 中文字幕在线观看免费高清电影 | 超碰在线观看av | 97精品一区| 九九免费在线视频 | 欧美日韩视频在线 | 日韩特级毛片 | 欧美日韩视频在线观看免费 | 欧美精品久久99 | 久久男人免费视频 | 日韩在线电影一区 | 亚洲激情一区二区三区 | 国产经典 欧美精品 | 91tv国产成人福利 | 精品久久五月天 | 顶级bbw搡bbbb搡bbbb | 一区二区精品视频 | 国产色网站| 热99久久精品 | av电影一区二区三区 | 精品国产一区二区三区不卡 | 在线观看视频在线 | 91尤物在线播放 | 精品产品国产在线不卡 | 天天躁日日躁狠狠躁 | 国产色久 | 久久久久成人精品免费播放动漫 | 亚洲黄色免费在线 | 国产小视频在线看 | 亚洲网久久 | 亚洲一级黄色av | 在线看成人av | 亚洲黄色片一级 | 麻豆影视在线观看 | 欧美精品被 | 欧美日韩中文字幕在线视频 | 99九九免费视频 | 国产又粗又猛又黄又爽 | 午夜精品一区二区三区可下载 | 韩日av在线 | 久久精品日韩 | 成年人免费av | 91精品在线播放 | 手机在线看a | 在线观看亚洲视频 | 一级久久精品 | 欧美久久九九 | 成人免费电影 | 日日久视频 | 久久精品人人做人人综合老师 | 国产精品久久久久一区二区三区 | 欧美一级电影免费观看 | 午夜三级毛片 | 91精品久久久久久久91蜜桃 | 国产亚洲人成网站在线观看 | 99视频在线精品免费观看2 | 99久久精品免费看国产一区二区三区 | 成人国产精品久久久 | 成人av日韩 | 一区二区三区影院 | 欧美资源 | 欧美在线视频免费 | 91.dizhi永久地址最新 | 亚洲午夜精品久久久 | 国产精品久久久久久久久久久久午夜片 | 六月丁香色婷婷 | 亚洲国产福利视频 | 国产精品麻豆91 | 干天天 | 91国内在线 | 日韩中文字幕视频在线 | 色香蕉在线视频 | a√天堂中文在线 | 欧美 激情在线 | 久热电影 | 欧美亚洲精品一区 | 91色在线观看视频 | 福利视频一区二区 | 久草在线视频国产 | 91在线视频免费观看 | 国产999久久久 | 一级全黄毛片 | 免费看成年人 | 91在线看片 | 在线看v片 | 欧美最爽乱淫视频播放 | 黄色免费在线看 | 日韩和的一区二在线 | 日韩理论片在线 | 久久久久久黄 | 欧美午夜a| 天天综合色网 | 二区三区毛片 | 日韩精品在线视频 | 欧美精品三级在线观看 | av福利在线导航 | 黄色资源网站 | 免费黄色特级片 | a视频在线播放 | 国产婷婷精品 | 中文字幕一区二区三区四区视频 | 最新av免费在线观看 | 99av国产精品欲麻豆 | 成人网中文字幕 | 99久久精品久久久久久动态片 | 狠狠躁夜夜av | 国产永久免费高清在线观看视频 | 日韩毛片在线一区二区毛片 | 国产一区二区免费看 | 成年人在线观看网站 | 国产精品成人自产拍在线观看 | 黄色影院在线免费观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久精品视频免费 | 美女国产在线 | 精品久久久久_ | 国产成人一区二区三区在线观看 | 久久精品高清视频 | 美女黄网久久 | 国产永久免费高清在线观看视频 | 亚洲精品网站在线 | 久久综合精品一区 | 在线免费视频 你懂得 | 欧美精品少妇xxxxx喷水 | 色www.| 婷婷色中文 | 麻豆视频免费 | 成人理论电影 | 国产精品第一 | 超碰在线9| 97精品国产一二三产区 | 亚洲一区美女视频在线观看免费 | 婷婷丁香激情五月 | 欧美视频在线二区 | 亚洲毛片一区二区三区 | 综合久久久 | 在线亚洲欧美视频 | 欧洲精品亚洲精品 | 国产精品 中文字幕 亚洲 欧美 | 国产色视频网站2 | 久亚洲精品 | 有没有在线观看av | 99视频这里有精品 | 日韩欧美一区二区在线播放 | 日韩一区二区三 | 开心色插 | 天天做天天爱夜夜爽 | 成人av在线网址 | 欧洲亚洲国产视频 | 国产免费又爽又刺激在线观看 | 9久久精品 | 18av在线视频 | 中文字幕在线播放av | 免费在线观看国产精品 | 日本中文字幕电影在线免费观看 | 国产精品日韩欧美 | 精品毛片久久久久久 | 91免费网址| 99久久国产免费,99久久国产免费大片 | 日日夜夜天天久久 | 精品一区二区在线看 | 色婷婷97 | 九九热免费精品视频 | 久久免费精品一区二区三区 | 日韩大片在线看 | 国产精品中文 | 69久久99精品久久久久婷婷 | 国产高清黄色 | 91粉色视频 | 天天操天天曰 | 国产精品一区在线观看 | 国产成人香蕉 | 欧美成人猛片 | 激情欧美丁香 | 精品一区二区在线免费观看 | 亚洲一级片av | 久久人人爽人人爽人人片av免费 | 1024手机基地在线观看 | 成人91在线观看 | 亚洲精品一区二区在线观看 | 日日爽天天| 嫩嫩影院理论片 | 99精品黄色片免费大全 | 国产高清区| 久久精品国产亚洲 | 精品在线视频播放 | 国产中文字幕一区二区三区 | 在线观看中文字幕2021 | 国产黄色网 | 国产精品永久免费 | 久久精品国产免费看久久精品 | 国内精品久久久久久久久久 | 爱干视频 | 国产精品18久久久久vr手机版特色 | 久久精品5 | 麻花豆传媒mv在线观看网站 | 黄av在线| 色婷婷欧美 | 国产啊v在线| 麻豆免费在线视频 | 日韩精品久久久久久久电影竹菊 | 国产一区视频在线观看免费 | 天天爽网站 | 亚洲一级黄色大片 | 99人久久精品视频最新地址 | 久久久久久97三级 | 中文字幕乱码日本亚洲一区二区 | 国产精品美女在线 | 成人免费影院 | 在线观看成人一级片 | 99久久精品久久久久久清纯 | 国内99视频 | 日本不卡一区二区三区在线观看 | 美女免费电影 | 成年人黄色av| 日韩av一区二区三区四区 | 少妇bbbb搡bbbb桶 | 91亚洲精品国偷拍 | av在线播放不卡 | 国产a级免费 | 日韩一级成人av | 国产精品久久久久久久av电影 | 亚洲精品在线免费 | 992tv在线成人免费观看 | 在线视频 成人 | 激情小说网站亚洲综合网 | 日韩免费高清在线观看 | 99色网站| 五月婷在线视频 | 在线观看岛国片 | 国产精品久久久久久久久免费 | 欧美a性| 欧美久久久久久久久久久久 | a久久免费视频 | 亚洲国产精品成人女人久久 | 黄免费在线观看 | 亚洲精品在线观看中文字幕 | 黄色tv视频| 成人午夜精品福利免费 | 免费国产在线观看 | 国产精品初高中精品久久 | 中文字幕在线观看免费高清完整版 | 中文字幕久久精品一区 | 欧美做受高潮电影o | 天天爽天天爽夜夜爽 | 伊人永久| 国产精品视频在线观看 | 丁香影院在线 | 亚洲精品五月天 | 丁香婷婷久久久综合精品国产 | 日日操狠狠干 | av免费在线观 | 99精品视频中文字幕 | 日本黄色大片免费看 | 黄色大片视频网站 | av在线播放中文字幕 | 特级西西444www高清大视频 | 三级在线国产 | 天堂va欧美va亚洲va老司机 | 亚洲精品大片www | 免费三级大片 | 人人超碰人人 | 少妇高潮流白浆在线观看 | 国产精品密入口果冻 | 99热日本 | 亚洲视频免费在线观看 | 中文字幕大全 | 免费国产亚洲视频 | 亚洲黄色免费在线看 | 亚洲欧美综合精品久久成人 | 天天操天天色天天射 | 欧美激情va永久在线播放 | 青青草华人在线视频 | 欧美精品v国产精品v日韩精品 | 天天爱天天操天天爽 | 国产小视频在线免费观看视频 | 免费av成人在线 | 在线91视频| 亚洲女在线 | 欧洲精品码一区二区三区免费看 | 免费观看日韩av | 精品一区二区日韩 | 国产精品久久久久久久电影 | 成人a v视频 | 奇米影视777四色米奇影院 | 天天天色综合a | 久草在线视频精品 | 国产99久久久精品 | 激情影音 | 欧美日韩视频观看 | 日日干干夜夜 | 国产视频在线观看一区 | 国产福利91精品 | 美女网站在线观看 | 91人人视频在线观看 | 黄在线免费观看 | 久草国产在线 | 欧美一级黄色网 | 日本精品视频在线播放 | 久久久久国产一区二区三区四区 | 久久人人爽人人爽 | 在线 国产 日韩 | 免费成视频 | 中文字幕av最新 | 中文字幕一区二区三区四区视频 | 91在线小视频 | 欧美人人爱 | 亚洲精品中文在线 | 91精品久久香蕉国产线看观看 | 精品不卡av | 91精品国产成人www | a级一a一级在线观看 | 亚洲精品视频在 | 91污在线| 美女视频一区 | 狠狠色噜噜狠狠狠合久 | 成人午夜精品久久久久久久3d | 日韩一级电影在线 | 日韩高清一二三区 | 黄色精品网站 | 日本女人在线观看 | 午夜精品成人一区二区三区 | 久久精品国产成人精品 | 免费色网站 | 国产成人精品亚洲 | 狠狠操欧美 | 欧美精品久久人人躁人人爽 | 丁香婷婷激情网 | 国模精品在线 | 四虎影院在线观看av | 色婷婷激情电影 | 日女人免费视频 | 免费久久99精品国产婷婷六月 | 久久五月婷婷丁香社区 | 日本在线视频一区二区三区 | 东方av免费在线观看 | 中文字幕在线观看视频一区二区三区 | 久久精品国产免费看久久精品 | 九色视频网站 | 国产在线一区观看 | av免费观看在线 | 国产只有精品 | 国产高清视频在线观看 | 免费观看性生交 | 日韩在线短视频 | 最新中文字幕在线播放 | 欧美性生爱 | 九九九电影免费看 | 在线免费观看黄网站 | 色婷婷狠狠五月综合天色拍 | 伊人影院在线观看 | 欧美久久久久久久 | 国产xxxxx在线观看 | 亚洲伊人第一页 | 国产精品99久久久久久武松影视 | 天天综合成人 | 国产精品久久久久久久久婷婷 | 五月婷婷综合在线 | 四虎影视久久久 | 欧美淫aaa免费观看 日韩激情免费视频 | 日本不卡视频 | 免费av片在线 | 91亚洲精品国偷拍自产在线观看 | 五月婷婷综合在线观看 | 中文字幕资源站 | 蜜桃视频色 | 最近日本中文字幕a | 又黄又网站 | 欧美日韩免费观看一区二区三区 | 精品欧美一区二区三区久久久 | 深爱开心激情网 | 国产在线观看免费观看 | 久久久国产精品电影 | 日韩精品在线视频 | 国产精品3 | 在线国产黄色 | 久久久久久久久久亚洲精品 | 国产精品成人a免费观看 | 国产最新视频在线观看 | 久久精品欧美日韩精品 | 天天插综合网 | 超级碰碰视频 | 国色天香在线观看 | 四虎国产精品免费 | 97网在线观看 | 五月天激情婷婷 | 奇米网444 | 亚洲精品97 | 久久噜噜少妇网站 | 久久激情日本aⅴ | 不卡av免费在线观看 | 午夜精品视频一区二区三区在线看 | 爱色婷婷 | av线上免费看 | 18做爰免费视频网站 | 天天综合狠狠精品 | 一级片视频免费观看 | 欧美网址在线观看 | 国产精品一区二区三区四 | 国产精品综合av一区二区国产馆 | 欧洲亚洲国产视频 | 99久久毛片 | 天天干,天天射,天天操,天天摸 | 7777精品伊人久久久大香线蕉 | 精品国产1区2区 | 三级视频日韩 | 国产综合在线视频 | 国产精品久久久久久久av电影 | 免费看搞黄视频网站 | 日本最新中文字幕 | 日韩免费中文 | 欧美日韩激情视频8区 | 久久99视频免费 | 最新av免费| 四虎成人免费观看 | 久草在线视频首页 | 国产黑丝一区二区三区 | 最新三级在线 | 黄色免费高清视频 | 中文字幕在线观看完整 | 视频在线观看一区 | 日韩精品一区二区三区免费视频观看 | 一区二区三区在线观看中文字幕 | 狠狠的干狠狠的操 | 成人国产精品久久久 | 久久免费黄色大片 | 亚洲一区二区视频 | 五月的婷婷 | 日本中文字幕在线观看 | 成人a视频片观看免费 | 正在播放一区二区 | 精品久久久99 | 精品国产电影 | 三级a视频 | 黄色av成人在线观看 | 欧美性久久久久久 | 日韩激情av在线 | 亚洲国产成人精品久久 | 天天草天天爽 | 国产在线资源 | 午夜av片 | 成年人在线免费看片 | 国产成人一区二区在线观看 | 国产视频欧美视频 | 超碰个人在线 | 国产精品色 | 99免费在线视频 | 亚洲手机天堂 | 中中文字幕av | 日韩成人不卡 | 亚洲国产天堂av | 99精品国产视频 | 很黄很色很污的网站 | 麻豆传媒视频在线免费观看 | 中文字幕一区二区三区在线观看 | 国产精品videoxxxx | 国产99亚洲 | 成人动漫视频在线 | 最近中文字幕在线中文高清版 | 伊人一级 | 久久激情五月丁香伊人 | 中文字幕一区二区三区四区久久 | 亚洲精品在线一区二区三区 | 久久艹在线| 韩国一区二区三区在线观看 | 欧美激情综合色综合啪啪五月 | 中文字幕精品在线 | av成人在线看 | 成人免费视频网 | 最近中文字幕完整高清 | 91夫妻视频| 天天人人综合 | 黄色福利网站 | 最近日本韩国中文字幕 | 天天射日| 婷婷色站 | 狠狠狠狠狠色综合 | 91在线国产观看 | 四虎精品成人免费网站 | 国产精品视频免费看 | 精品二区久久 | 精品久久久久久久久久久久 | 在线天堂8√ | 婷婷久久综合九色综合 | 婷婷激情综合五月天 | 日日日日干 | 国产一区国产二区在线观看 | 久草9视频 | 三级大片网站 | 免费看污网站 | 在线观看欧美成人 | 91福利在线观看 | 狠狠gao | 日韩欧美视频一区 | 日韩免费在线网站 | 中文伊人| 久久久夜色 | 成人网色 | 亚洲 欧美日韩 国产 中文 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 亚洲黄色免费在线看 | 天天看天天干 | 国产精品美女免费视频 | 久久a久久 | 色在线视频网 | 久久综合激情 | 在线观看精品国产 | 日韩欧美一级二级 | 色a网| 久草在线手机视频 | 成人9ⅰ免费影视网站 | 精品在线观看一区二区 | 国产一级视屏 | 亚洲精品乱码久久久久久蜜桃91 | 成人在线观看网址 | 久久免费影院 | 国产精品女同一区二区三区久久夜 | www国产精品com | 夜夜视频| 99久高清在线观看视频99精品热在线观看视频 | 天天摸天天干天天操天天射 | 国产精品久久久久久久7电影 | 99精品视频网站 | 久久99久久99精品免观看粉嫩 | 国产专区日韩专区 | 色偷偷888欧美精品久久久 | av成人在线看 | 中文字幕免费看 | 久久久久国产成人免费精品免费 | 久草资源在线观看 | 国产一区二区在线免费播放 | 久草在线一免费新视频 | 999毛片| 婷婷久草 | av 在线观看 | 99久久精品费精品 | 中文字幕日韩无 | 久久久久国产免费免费 | 国内精品久久久 | 在线观看 国产 | 99久久精| 国产色婷婷精品综合在线手机播放 | www.国产在线视频 | 国产一区二区在线观看免费 | 毛片网站免费在线观看 | 又黄又爽又色无遮挡免费 | 亚洲一片黄 | 久久久色 | 国产91国语对白在线 | 天天做天天爽 | 国产精品一区二区吃奶在线观看 | 亚洲精品自拍视频在线观看 | 国产精品成人一区二区 | 国产91成人 | 婷婷综合伊人 | 日韩电影中文字幕 | 偷拍福利视频一区二区三区 | 黄色小说视频在线 | 精品国产欧美一区二区三区不卡 | 国产护士hd高朝护士1 | 看毛片网站| 国产精品久久久久久久久久久久午夜片 | 欧美大片mv免费 | 国产一区二区在线观看视频 | 色五月色开心色婷婷色丁香 | 国产va饥渴难耐女保洁员在线观看 | 中日韩欧美精彩视频 | 中文字幕成人 | 91人人爱| 欧美日韩免费在线视频 | 亚洲成免费| 欧美性大战久久久久 | 黄色免费在线看 | 日本 在线 视频 中文 有码 | av电影在线不卡 | 午夜在线看 | 国产精品高潮久久av | 韩国av一区 | 欧美日韩在线第一页 | 国产又粗又猛又黄又爽 | 999一区二区三区 | 天天操天天添天天吹 | 欧美激情视频一区二区三区 | 人人草网站 | 精品国产乱子伦一区二区 | 欧美日韩国产二区 | 久久理论影院 | 玖玖精品视频 | 国产日韩欧美在线一区 | 成人在线免费看视频 | 国产精品网站 | 久久成人在线 | 日韩视频免费看 | 欧美少妇18p | 免费在线观看一区二区三区 | 国产中文 | 日日夜夜天天久久 |