zoukankan      html  css  js  c++  java
  • 注解框架

    注解框架

    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));
      }
     
     
    }
  • 相关阅读:
    linux学习-----项目上线步骤
    linux学习-----数据库MySQL
    linux学习-----shell基础
    linux学习-----网络基础,网络相关命令,项目上线流程
    linux学习-----linux权限,sudo的使用
    linux学习-----开机启动项设置,ntp服务,防火墙服务,rpm服务,cron服务
    linux学习-----用户,用户组管理 网络设置 ssh服务
    linux学习-----vim编辑器的使用
    linux学习-----指令学习2 及练习
    linux学习-----指令学习1
  • 原文地址:https://www.cnblogs.com/conncui/p/4376270.html
Copyright © 2011-2022 走看看