web-dev-qa-db-ja.com

Android注釈と、Android注釈?

Android注釈、すべてのAndroidプロジェクトで使用するより良い方法ですか?。

正しい場合、それを実装する方法。良いチュートリアルはありますか?

それが間違った方法である場合。 Android Annotations?

助けてくれてありがとう。

29

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アノテーションの動作も同様です。

要約すると、他のライブラリと同様に、依存している場合は依存しているため、どのように機能するかを十分に理解する必要があります。あなたのプロジェクトは今、他の誰かに依存しています。

34
rastadrian

Android Annotations、もう使用していません。このライブラリを使用すると、バグが発生し、デバッグが悪夢になりました。別の欠点は、コードの移植性が低下することです。プロジェクトで単独で作業している場合、この問題は発生しませんが、チームで作業する場合は、これについて再考する必要があります。

使用したい場合は、 their site にたくさんのチュートリアルがあります。

別の方法:コードの量を減らして使いやすく、理解しやすくしたい場合は、 Butter Knife ライブラリをお勧めします。私が使用しているものはたくさんあり、今のところバグに遭遇していません。非常に使いやすく、読みやすい。

6
DDsix

Android Annotationsは、Android向けの1つのツールにまとめられたサードパーティライブラリです。依存性注入、スレッド処理などが可能です。使用することはお勧めしません。バギーで不安定です。現在の仕事では、プロジェクトに取り組んでおり、タスクはAndroid Annotationsを削除することです。Dagger2、Butterknife、およびRxJavaを使用することをお勧めします

4
Zeyad Gasser

Android Annotations は、@ EActivity、@ ViewById、@ OnClickなどの属性または注釈を使用してコードを「自動生成」するライブラリです。コーディング時間を容易にし、短縮することを目的としています。

「AndroidAnnotationsは、Android開発を高速化するオープンソースフレームワークです。配管作業を行い、本当に重要なことに集中できます。コードを簡素化することで、メンテナンスが容易になります。 "

(ドキュメントはこちら: https://github.com/excilys/androidannotations/wiki

しかし... ...私たちはそれを使用しません。DDsixの答えに完全に同意します。 SOLID原則とコードを使用して、いつどこでコーディングするかを指定します...

4
Juan

Android Studio。

  1. 「空のアクティビティ」テンプレートを使用してAndroidプロジェクトを作成します。
  2. 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'
    ==>     }
        }
    }
    
  3. 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'
    }
    
  4. メインレイアウト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" />
    
  5. 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>
    
  6. これで、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!");
        }
    }
    
  7. デバイスまたはエミュレーターで実行して、どのように簡単に機能するかを確認してください。

2
Jared Tsai