简体   繁体   English

OnKeyListener无法正常工作

[英]OnKeyListener not working

I am trying to implement an animation on key event. 我正在尝试在关键事件上实现动画。 Same code is working fine on OnClickListener but OnKeyListener, nothing is happening. 相同的代码在OnClickListener上正常工作,但是OnKeyListener,没有任何事情发生。 Even no error message on Logcat. 甚至在Logcat上没有错误消息。

Please help me to solve this problem. 请帮我解决这个问题。 Below is my code. 以下是我的代码。 Please tell me where I'm wrong. 请告诉我我哪里错了。

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;
            }
        });


    }



}

KeyCode s depends on the keyboard you use. KeyCode取决于您使用的键盘。 Meaning you may get a different KeyCode from different keyboards for the same key. 这意味着您可以从同一个键的不同键盘获得不同的KeyCode And remember, from the documentation , 请记住,从文档中

View.OnKeyListener is only useful for hardware keyboards; View.OnKeyListener仅对硬件键盘有用; a software input method has no obligation to trigger this listener. 软件输入方法没有义务触发此监听器。

Here how I implemented an on key listener: 这是我如何实现一个on key listener:

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;
        }

    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM