Android注釈、すべてのAndroidプロジェクトで使用するより良い方法ですか?。
正しい場合、それを実装する方法。良いチュートリアルはありますか?
それが間違った方法である場合。 Android Annotations?
助けてくれてありがとう。
Android Annotations は、アプリケーション内のコードを簡素化し、クリックリスナーの設定、UI /バックグラウンドスレッドの実行の強制など、一般的なパターンの定型文を削減できる注釈駆動型のフレームワークです。等.
次のようなものから始めることができます:
_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);
}
});
}
}
_
このようなものに:
_@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);
}
}
_
仕組み
アクティビティとコンポーネントに注釈を付けると、注釈プロセッサは、デフォルトでアンダースコアサフィックスを使用してアクティビティとコンポーネントを拡張するクラスを生成します(つまり、アクティビティを最終的にすることはできません)。したがって、MainActivity
がある場合、これで、_MainActivity_
_クラスも作成されます。
この新しいクラスには、注釈が指定することをすべて実行する、よく書かれた定型コードが含まれています。
実装方法
Android Annotationsを統合する方法についてこのチュートリアルを作成し、統合テストの更新方法の例を含めることもできます check here 。
このチュートリアルは、今日の時点でAndroid Studio〜1.5.1を使用して有効であり、内部の仕組みについて少し説明しようとします。
それを使用しますか?
小中規模のプロジェクトがあればそれでいいと思います。 コードを読みやすくします。しかし、アプリケーションが大きく、複雑なアクティビティ/コンポーネントライフサイクルを伴うナビゲーションフローが多数含まれている場合、実装が少し難しくなるか、デバッグおよびエラーの理解が困難になる可能性があります適切に注釈が付けられていません。
Androidアノテーションはどのように動作するかにより、ライフサイクルに組み込まれ、そうすることで、ライフサイクルに依存しますビューに_@ViewById
_が含まれている場合、onCreate()
でそれらを参照することはできません。メソッドを作成し、_@AfterViews
_で注釈を付ける必要があります。これは必ずしも問題ではなく、Androidの動作を十分に理解している必要があります。Androidアノテーションの動作も同様です。
要約すると、他のライブラリと同様に、依存している場合は依存しているため、どのように機能するかを十分に理解する必要があります。あなたのプロジェクトは今、他の誰かに依存しています。
Android Annotations、もう使用していません。このライブラリを使用すると、バグが発生し、デバッグが悪夢になりました。別の欠点は、コードの移植性が低下することです。プロジェクトで単独で作業している場合、この問題は発生しませんが、チームで作業する場合は、これについて再考する必要があります。
使用したい場合は、 their site にたくさんのチュートリアルがあります。
別の方法:コードの量を減らして使いやすく、理解しやすくしたい場合は、 Butter Knife ライブラリをお勧めします。私が使用しているものはたくさんあり、今のところバグに遭遇していません。非常に使いやすく、読みやすい。
Android Annotationsは、Android向けの1つのツールにまとめられたサードパーティライブラリです。依存性注入、スレッド処理などが可能です。使用することはお勧めしません。バギーで不安定です。現在の仕事では、プロジェクトに取り組んでおり、タスクはAndroid Annotationsを削除することです。Dagger2、Butterknife、およびRxJavaを使用することをお勧めします
Android Annotations は、@ EActivity、@ ViewById、@ OnClickなどの属性または注釈を使用してコードを「自動生成」するライブラリです。コーディング時間を容易にし、短縮することを目的としています。
「AndroidAnnotationsは、Android開発を高速化するオープンソースフレームワークです。配管作業を行い、本当に重要なことに集中できます。コードを簡素化することで、メンテナンスが容易になります。 "
(ドキュメントはこちら: https://github.com/excilys/androidannotations/wiki )
しかし... ...私たちはそれを使用しません。DDsixの答えに完全に同意します。 SOLID原則とコードを使用して、いつどこでコーディングするかを指定します...
Android Studio。
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'
==> }
}
}
App/build.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'
}
メインレイアウトactivity_main.xmlにTextViewとボタンを追加します
<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" />
AndroidManifest.xmlでアクティビティ名を「MainActivity_」に変更します
<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>
これで、MainActivity.Javaを次のように簡略化できます
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!");
}
}
デバイスまたはエミュレーターで実行して、どのように簡単に機能するかを確認してください。