转载自http://hista.iteye.com/blog/2180683
@OptionsMenu、@OptionsMenuItem、@OptionsItem
@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)
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();
- }
- }
@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);
}
@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
- }
- }
@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();
- }
- }