qu'est-ce que les Annotations Android et pourquoi nous utilisons les Annotations Android?
je veux savoir à propos de Android Annotations, il est le meilleur moyen de les utiliser dans tous les projets android?.
si correct, comment l'implémenter. Est-il un bon tuto pour ça?
Si c'est une mauvaise façon. Quel est le dessin des Annotations Android?
Merci d'avance pour l'aide.
5 réponses
Annotations Android est un framework piloté par annotation qui vous permet de simplifier le code dans vos applications et de réduire le boilerplate de modèles communs, tels que la mise en place d'écouteurs de clics, l'exécution de l'ui/background thread exécutions, etc.
Vous pouvez passer de l'avoir quelque chose comme ceci:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView descriptionTextView = (TextView) findViewById(R.id.tv_description);
final Button hideButton = (Button) findViewById(R.id.btn_hide);
hideButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
descriptionTextView.setVisibility(View.INVISIBLE);
}
});
}
}
À quelque chose comme ceci:
@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewById(R.id.tv_description)
TextView mDescriptionTextView;
@Click(R.id.btn_hide)
protected void onHideButtonClick() {
mDescriptionTextView.setVisibility(View.INVISIBLE);
}
}
Comment ça marche
vous annotez vos activités et components, le processeur d'annotations génère alors des classes (au moment de la compilation) qui prolongent vos activités et components (i.e. vos activités ne peuvent pas être finales) avec un suffixe de soulignement par défaut, donc si vous avez MainActivity
, maintenant vous aurez également un MainActivity_
classe.
cette nouvelle classe contient un code boilerplate bien écrit qui fait tout ce que l'annotation spécifie.
comment mettre en oeuvre
j'ai écrit ce tutoriel sur la façon de intégrer les Annotations Android et même inclure un exemple sur la façon dont les tests d'intégration sont mis à jour,voir ici.
ce tutoriel est valide à partir d'aujourd'hui, en utilisant Android Studio ~1.5.1, et il essaie d'expliquer un peu sur la façon dont l'interne fonctionne.
Devriez-vous utiliser?
je dirais que si vous avez un petit-projet moyen c'est très bien. il rendra votre code plus facile à lire. Mais si votre demande est plus grande et contient beaucoup de flux de navigation avec des cycles de vie d'activités/composants complexes, il peut obtenir un peu difficile à mettre en œuvre ou difficile de déboguer et de comprendre les erreurs si quelque chose n'est pas correctement annotés.
en raison de la façon dont les Annotations Android fonctionnent, ils se sont intégrés dans le cycle de vie et le faire,vous êtes maintenant dépendante de leur cycle de vie (par exemple si vous annotez vos vues avec @ViewById
, alors vous ne pouvez pas référencer dans onCreate()
, vous besoin de faire une méthode et l'annoter avec @AfterViews
et quand cette méthode est exécutée alors vos vues sont prêtes à être utilisées). Ce n'est pas nécessairement un problème, vous avez juste besoin d'avoir une bonne compréhension des comportements D'Android et bien, Annotations Android comportements ainsi.
En résumé, comme dans toute bibliothèque, si vous comptez sur elle, bien vous en dépendent, de sorte que vous pourriez aussi bien comprendre très bien comment il fonctionne. Votre projet dépend maintenant de quelqu'un d'autre.
Je n'utilise plus D'Annotations Android, plus maintenant. Quand j'ai utilisé cette bibliothèque, elle était boguée et a fait du débogage un cauchemar. Un autre inconvénient est qu'elle réduit la portabilité de votre code. Si vous travaillez seul sur le projet, alors ce n'est pas grave, vous n'avez pas ce problème, mais quand vous travaillez en équipe, vous devez y réfléchir à deux fois.
Si vous voulez l'utiliser, il ya beaucoup de tutoriels droit sur leur site.
Une alternative: Si vous voulez diminuez la quantité de code tout en le rendant très facile à utiliser et à comprendre, je vous suggère le Couteau À Beurre bibliothèque. J'utilise beaucoup et je n'ai rencontré aucun bogue jusqu'à présent. Très facile à utiliser et à lire.
Annotations Android est une bibliothèque qui "autogénère" code pour nous en utilisant des attributs ou des anotations comme @EActivity, @ViewById, @OnClick. Il est destiné à faciliter et à réduire le temps de codage.
"AndroidAnnotations est un framework Open Source qui accélère le développement D'Android. Il prend soin de la plomberie, et vous permet de vous concentrer sur ce qui est vraiment important. En simplifiant votre code, il en facilite la maintenance."
(Documentation ici: https://github.com/excilys/androidannotations/wiki)
Mais... Nous ne l'utilisons pas, je suis entièrement d'accord avec la réponse de DDsix. Utilisez des principes solides et codez ce qui devrait être codé quand et où il devrait être...
Annotations Android est une bibliothèque tierce partie qui a été fait pour être tout en un seul outil pour Android. Sa capacité d'injection de dépendance, la manipulation de fils, et plus encore. Je ne recommande pas de l'utiliser; c'est buggy, et instable. Dans mon travail actuel, je travaille sur un projet et ma tâche est de supprimer Android Annotations. Je voudrais suggérer à l'aide de la Dague à 2, Butterknife, et RxJava
Voici l'exemple avec Android Studio.
- créer un projet Android avec le modèle" Empty Activity".
éditer le project_root / build.gradle
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' ==> classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } allprojects { repositories { jcenter() ==> maven { ==> url = 'https://oss.sonatype.org/content/repositories/snapshots' ==> } } }
éditer l'application / Construire.gradle
apply plugin: 'com.android.application' apply plugin: 'android-apt' <============ android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.just.myapplication" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' ==> apt "org.androidannotations:androidannotations:4.0-SNAPSHOT" ==> compile 'org.androidannotations:androidannotations-api:4.0-SNAPSHOT' }
Ajouter un TextView et un bouton dans la mise en page principale, activity_main.xml
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Not Click Yet" android:id="@+id/textView"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:id="@+id/button" android:text="Click" android:layout_below="@+id/textView" />
changer le nom de l'activité en "MainActivity_" dans AndroidManifest.xml
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> ==> <activity android:name=".MainActivity_"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
maintenant, votre activité principale.java peut être simplifié comme ci-dessous
package com.just.myapplication; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; @EActivity (R.layout.activity_main) public class MainActivity extends AppCompatActivity { @ViewById(R.id.textView) TextView mText; @Click void button() { mText.setText("Button Clicked!"); } }
essayez de l'exécuter avec un dispositif ou un émulateur pour voir comment simple il fonctionne.