@OptionsMenu :用来指定菜单资源
@OptionsMenuItem :MenuItem的实例
@OptionsItem :用来接收菜单的选中事件
没有上面的注解,我们要这样写代码
@EActivity(R.layout.activity_test) public class TestActivity extends Activity { MenuItem itemhome; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(com.hista.weiweilove.R.menu.mymenu, menu); itemhome = menu.findItem(R.id.menu_home); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ case R.id.menu_home: Toast.makeText(TestActivity.this, ""+"home", Toast.LENGTH_SHORT).show(); itemhome.setTitle("主页君"); break; case R.id.menu_search: Toast.makeText(TestActivity.this, ""+"search", Toast.LENGTH_SHORT).show(); break; case R.id.menu_share: Toast.makeText(TestActivity.this, ""+"share", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } }
有了上面的注解我们可以这样写代码
@EActivity(R.layout.activity_test) @OptionsMenu(R.menu.mymenu) public class TestActivity extends Activity { @OptionsMenuItem MenuItem menu_home; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @OptionsItem(R.id.menu_share) void myMethod() { // You can specify the ID in the annotation, or use the naming convention Toast.makeText(TestActivity.this, ""+"share", Toast.LENGTH_SHORT).show(); } @OptionsItem void menu_home() { // home was selected in the action bar // The "Selected" keyword is optional Toast.makeText(TestActivity.this, ""+"home", Toast.LENGTH_SHORT).show(); menu_home.setTitle("主页君"); } @OptionsItem boolean menu_search() { Toast.makeText(TestActivity.this, ""+"search", Toast.LENGTH_SHORT).show(); // menuSearch was selected // the return type may be void or boolean (false to allow normal menu processing to proceed, true to consume it here) return true; } @OptionsItem({ R.id.menu_search, R.id.menu_share }) void multipleMenuItems() { // You can specify multiple menu item IDs in @OptionsItem Toast.makeText(TestActivity.this, ""+"search or share", Toast.LENGTH_SHORT).show(); } }
@OptionsItem({ R.id.menu_search, R.id.menu_share }) 支持多个MenuItem
@SeekBarProgressChange
在未使用这个注解前,我们要写这样的代码
@EActivity(R.layout.activity_test) public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById SeekBar seekbar1; @ViewById SeekBar seekbar2; @UiThread void setObject(String s){ tvTest.setText(s); } @AfterViews void afterView(){ seekbar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar arg0,int progress,boolean fromUser) { setObject(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub Toast.makeText(TestActivity.this, "seekbar touch stare", 100).show(); } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub Toast.makeText(TestActivity.this, "seekbar touch end", 100).show(); } }); } }
使用之后我们可以这样写代码:
@EActivity(R.layout.activity_test) public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById SeekBar seekbar1; @ViewById SeekBar seekbar2; @UiThread void setObject(String s){ tvTest.setText(s); } @SeekBarProgressChange(R.id.seekbar1) void onProgressChangeOnSeekBar(SeekBar seekBar, int progress, boolean fromUser) { // Something Here setObject(String.valueOf(progress)); } @SeekBarProgressChange(R.id.seekbar1) void onProgressChangeOnSeekBar(SeekBar seekBar, int progress) { // Something Here setObject(String.valueOf(progress)); } @SeekBarProgressChange({R.id.seekbar1, R.id.seekbar2}) void onProgressChangeOnSeekBar(SeekBar seekBar) { // Something Here setObject(String.valueOf(seekBar.getProgress())); } @SeekBarProgressChange({R.id.seekbar1, R.id.seekbar2}) void onProgressChangeOnSeekBar() { // Something Here } }
@SeekBarProgressChange({R.id.seekbar1, R.id.seekbar2}) :支持绑定多个View
同样,与前面的几个事件一样,也支持多种参数形式
@SeekBarTouchStart、@SeekBarTouchStop
原有代码书写方式见前面那个注解,这里就不重复了
有了这两个注解后,我们可以这样写代码了:
@EActivity(R.layout.activity_test) public class TestActivity extends Activity { @ViewById(R.id.tv_test) TextView tvTest; @ViewById SeekBar seekbar1; @UiThread void setObject(String s){ tvTest.setText(s); } @SeekBarTouchStart(R.id.seekbar1) void seekbarStart(SeekBar seekBar) { Toast.makeText(TestActivity.this, "seekbar touch stare", 100).show(); } @SeekBarTouchStop(R.id.seekbar1) void seekbarStop(SeekBar seekBar) { Toast.makeText(TestActivity.this, "seekbar touch stop", 100).show(); } }
至这里AndroidAnnotations的事件的注解就全部结束了