Android OnKeyListener不工作
我正在尝试在关键事件上实现动画。同样的代码在OnClickListener上运行良好,但是OnKeyListener没有发生任何事情。Logcat上甚至没有错误消息 请帮我解决这个问题。下面是我的代码。请告诉我哪里错了Android OnKeyListener不工作,android,Android,我正在尝试在关键事件上实现动画。同样的代码在OnClickListener上运行良好,但是OnKeyListener没有发生任何事情。Logcat上甚至没有错误消息 请帮我解决这个问题。下面是我的代码。请告诉我哪里错了 package com.example.SliderImage; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEv
package com.example.SliderImage;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ViewFlipper;
public class SliderImage extends Activity {
ViewFlipper flipper;
String value;
int i;
int menuArray[] = {R.id.gtmain, R.id.gtmini, R.id.gtmore};
protected void showPrevious() {
// TODO Auto-generated method stub
}
protected void setInAnimation(Animation inFromRightAnimation) {
// TODO Auto-generated method stub
}
protected void setOutAnimation(Animation outToLeftAnimation) {
// TODO Auto-generated method stub
}
protected void showNext() {
// TODO Auto-generated method stub
}
private Animation inFromRightAnimation() {
Animation inFromRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromRight.setDuration(500);
inFromRight.setInterpolator(new AccelerateInterpolator());
return inFromRight;
}
private Animation outToLeftAnimation() {
Animation outtoLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outtoLeft.setDuration(500);
outtoLeft.setInterpolator(new AccelerateInterpolator());
return outtoLeft;
}
private Animation inFromLeftAnimation() {
Animation inFromLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromLeft.setDuration(500);
inFromLeft.setInterpolator(new AccelerateInterpolator());
return inFromLeft;
}
private Animation outToRightAnimation() {
Animation outtoRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outtoRight.setDuration(500);
outtoRight.setInterpolator(new AccelerateInterpolator());
return outtoRight;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
flipper = (ViewFlipper) findViewById(R.id.flipper);
final Button miniButton = (Button) findViewById(R.id.gtmini);
final Button mainButton = (Button) findViewById(R.id.gtmain);
final Button moreButton = (Button) findViewById(R.id.gtmore);
miniButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showNext();
}
});
mainButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.setInAnimation(inFromLeftAnimation());
flipper.setOutAnimation(outToRightAnimation());
//flipper.showPrevious();
flipper.showNext();
}
});
moreButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.setInAnimation(inFromLeftAnimation());
flipper.setOutAnimation(outToRightAnimation());
// flipper.showPrevious();
flipper.showNext();
}
});
mainButton.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
String a1=String.valueOf(keyCode);
Log.i("listvalaaaaaaaaaa",a1);
if (keyCode==66) {
//String value=mainButton.getText().toString();
if(value.equalsIgnoreCase("GO TO MAIN"))
{
//startActivity(new Intent(Start.this,MainEpg.class));
}
if(value.equalsIgnoreCase("GO TO MINI"))
{
//startActivity(new Intent(Start.this,MiniEpg.class));
}
}
if (keyCode==22) {
Log.i("insideright","ghkhkjhk");
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showNext();
}
int c = moreButton.getId();
int b = mainButton.getId();
int a = moreButton.getId();
menuArray[0] = b;
menuArray[1] = c;
menuArray[2] = a;
moreButton.setId(menuArray[i]);
miniButton.setId(menuArray[++i]);
mainButton.setId(menuArray[++i]);
mainButton.requestFocus();
i = 0;
//mainButton.requestFocus();
mainButton.setSelected(true);
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showNext();
if (keyCode==21) {
int a11 = moreButton.getId();
int b1 = mainButton.getId();
int c1 = moreButton.getId();
menuArray[0] = c1;
menuArray[1] = b1;
menuArray[2] = a11;
moreButton.setId(menuArray[i]);
miniButton.setId(menuArray[++i]);
mainButton.setId(menuArray[++i]);
mainButton.requestFocus();
i = 0;
//mainButton.requestFocus();
mainButton.setSelected(true);
/* flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showPrevious();*/
}
return true;
}
});
}
}
下面是我如何在密钥侦听器上实现的:
this.m_vwJokeEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
if (arg2.getAction() == KeyEvent.ACTION_DOWN) {
if (arg1 == KeyEvent.KEYCODE_DPAD_CENTER
|| arg1 == KeyEvent.KEYCODE_ENTER) {
// do something here
return true;
}
}
return false;
}
});
KeyCode
s取决于您使用的键盘。也就是说,对于同一把钥匙,您可能会从不同的键盘上获得不同的键盘编码。记住,从
View.OnKeyListener仅对硬件键盘有用;软件输入法没有义务触发此侦听器
当您按下某个键时是否调用onKey?是-当该键的动作被按下且按下的键是dpad或enter时,此代码将执行某些操作。问题代码的问题在于,它将来会混合使用KeyEvent和int操作,请给出一个再现问题的最小示例。