注解框架

注解框架

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

使用@EBean的JavaBean,能直接取到调用他的Context,支持@ViewById标签找到控件,因此,构造方法传过来的参数可以少很多。 
上代码:

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中的调用方法:

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));  }     }

你可能感兴趣的:(框架)