註解框架

註解框架html

AndroidAnnotations框架@Ebean,@RootContext,@Background,@UiThread,@AfterInject,@AfterTextChange標籤的使用方法

使用@EBean的JavaBean,能直接取到調用他的Context,支持@ViewById標籤找到控件,所以,構造方法傳過來的參數能夠少不少。 
上代碼:java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.example.androidannotations;
 
import android.content.Context; import android.widget.TextView; import android.widget.Toast;   import com.googlecode.androidannotations.annotations.AfterInject; import com.googlecode.androidannotations.annotations.Background; import com.googlecode.androidannotations.annotations.EBean; import com.googlecode.androidannotations.annotations.RootContext; import com.googlecode.androidannotations.annotations.UiThread; import com.googlecode.androidannotations.annotations.ViewById;   @EBean public class Student {  //RootContext能取到調用該Bean的Context,構造方法再也不須要傳Context參數  @RootContext  Context context;  @RootContext  MainActivity activity;  //ViewById也能在這裏直接使用  @ViewById  TextView tv;  public void Toast()  {   Toast.makeText(context, "在Ebean中調用", Toast.LENGTH_LONG).show();  }  //後臺線程執行  @Background  public void backThread()  {   for(int i=0;i<9999;i++)   {    try {     Thread.sleep(1000); // activity.updateTv(i);     //更新UI,調用在UI線程執行的方法     updateTv(i);    } catch (InterruptedException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }     }  }  //UiThread在UI線程執行  @UiThread  public void updateTv(int i)  {   tv.setText(String.valueOf(i));  }  //AfterInject在構造方法執行完成後執行  @AfterInject  public void doSomethingAfterInject()  {   System.out.println("Student AfterInject");  }   }

在Activity中的調用方法:android

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.example.androidannotations;
 
import android.app.Activity; import android.text.Editable; import android.widget.EditText; import android.widget.TextView;   import com.googlecode.androidannotations.annotations.AfterTextChange; import com.googlecode.androidannotations.annotations.AfterViews; import com.googlecode.androidannotations.annotations.Bean; import com.googlecode.androidannotations.annotations.Click; import com.googlecode.androidannotations.annotations.EActivity; import com.googlecode.androidannotations.annotations.Fullscreen; import com.googlecode.androidannotations.annotations.NoTitle; import com.googlecode.androidannotations.annotations.UiThread; import com.googlecode.androidannotations.annotations.ViewById; import com.googlecode.androidannotations.annotations.res.StringRes;   //Eactivity註釋能夠設置Layout,至關於setConentView方法 @EActivity(R.layout.activity_main) @Fullscreen @NoTitle public class MainActivity extends Activity {  //ViewById註釋功能與findViewById相同,若是聲明的變量名就是id,能夠省去參數,不然應加上id,如ViewById(R.id.tv)    @ViewById  TextView tv;  @ViewById  EditText edit;  @StringRes(R.string.hello_world)  String hello;  //須要使用@Bean標籤  @Bean  Student stu;  //AfterViews註釋定義的方法會在OnCreate方法的setContentView後執行  @AfterViews  void init()  {   tv.setText("asfsdf");  }  //在EditText內容改變時,更新TextView內容  @AfterTextChange(R.id.edit)  void afterEditChange(Editable text, TextView hello)  {   tv.setText(hello.getText());  }  //點擊TextView時調用  @Click(R.id.tv)  void tvClicked()  {   stu.Toast();   stu.backThread();  }  //在stu中也能夠回調這個方法來更新UI  @UiThread  public void updateTv(int i)  {   tv.setText(String.valueOf(i));  }     }
相關文章
相關標籤/搜索