检测菜单按钮事件

时间:2013-01-24 12:46:55

标签: android

我要禁用菜单按钮。我读了很多文章,没有任何作品 我甚至无法检测菜单按钮按下的事件。覆盖方法如 onKeyDown(),onKeyUp(),onPrepareOptionsMenu(),onCreateOptionsMenu()没有 工作。我真的很绝望,请帮忙。

public class MainActivity extends Activity{
TranslateAnimation animateTopLayer;
Button btnOk;
ImageView ivLockMechanism;
ViewGroup rlTopLayer;
FramesSequenceAnimation anim;

@Override
public void onAttachedToWindow() {
    getWindow().addFlags(WindowManager.LayoutParams. FLAG_DISMISS_KEYGUARD);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent lockServiceIntent = new Intent(getApplicationContext(),LockService.class);
    startService(lockServiceIntent);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.test);
    rlTopLayer = (ViewGroup) findViewById(R.id.rlTopLayer);
    ivLockMechanism = (ImageView) findViewById(R.id.ivLockMechanism);
    btnOk = (Button) findViewById(R.id.btnOk);
    btnOk.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            rlTopLayer.startAnimation(animateTopLayer);
        }
    });
    Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.pg_0);
    ivLockMechanism.setImageBitmap(b);
    anim = AnimationsContainer.getInstance().unlockMechanismAnimation(ivLockMechanism);
    animateTopLayer = new TranslateAnimation(0, 500,0, 0);
    animateTopLayer.setDuration(1000);
    animateTopLayer.setFillAfter(true);
    animateTopLayer.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            anim.start();
        }
    });
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (  Integer.valueOf(android.os.Build.VERSION.SDK) < 7 
            && keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        onBackPressed();
    }

    if (keyCode == KeyEvent.KEYCODE_MENU){
        return false;
    } 

    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    return;
}

@Override
protected void onPause() {
    super.onPause();
    finish();
}

}

1 个答案:

答案 0 :(得分:6)

这对我有用:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
  

返回true以防止此事件进一步传播,或   false表示您没有处理此事件,它应该   继续传播。

@Override
 public boolean onPrepareOptionsMenu (Menu menu) {
     return false;
 }