• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ゞ繌瓜oо
博客园    首页    新随笔    联系   管理    订阅  订阅

键盘响应事件

网络111 袁阔

在应用的程序的控制方面,更多的使用的是屏幕上的控件,但是有的时候也需要直接对键盘事件来进行响应。键盘是Android中主要的输入设备,对按键的响应的处理是响应之间在程序中使用键盘的核心内容。 本例需要实现的内容是通过键盘来控制屏幕上的一个图片的Alpha值,使用上键和右键增加图片的Alpha值,使用下键和左键减少图片的Alpha值。显示内容如下所示:

                                        

本例包含了一个文本框和一个显示图片的控件,这样可以文本框用作显示当前的Alpha的比例值,显示图片的控件ImageView用于显示一个图片。

本例的源代码实现如下所示:

public class TestKeyEvent extends Activity {

    private static final String TAG = "TestKeyEvent";

    private ImageView mImage;

    private TextView  mAlphavalueText;

    private int mAlphavalue;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.testkeyevent);

        mImage = (ImageView) findViewById(R.id.image);

        mAlphavalueText = (TextView) findViewById(R.id.alphavalue);

        mAlphavalue = 100;

        mImage.setAlpha(mAlphavalue);

        mAlphavalueText.setText("Alpha = " + mAlphavalue*100/0xff + "%");

            }

          @Override

    public boolean onKeyDown(int keyCode, KeyEvent msg){

        Log.v(TAG, "onKeyDown: keyCode =  "+ keyCode);

        Log.v(TAG, "onKeyDown: String =  " + msg.toString());

          switch (keyCode) {

            case KeyEvent.KEYCODE_DPAD_UP:

            case KeyEvent.KEYCODE_DPAD_RIGHT:

                                mAlphavalue += 20;

                break;

            case KeyEvent.KEYCODE_DPAD_DOWN:

            case KeyEvent.KEYCODE_DPAD_LEFT:

                mAlphavalue -= 20;

                break;

            default:

                break;

        }

        if(mAlphavalue>=0xFF)mAlphavalue = 0xFF;

        if(mAlphavalue<=0x0)mAlphavalue = 0x0;

        mImage.setAlpha(mAlphavalue);

        mAlphavalueText.setText("Alpha = " + mAlphavalue*100/0xff + "%");

        return super.onKeyDown(keyCode, msg);

    }

}

本例子使用onKeyDown()函数来获得按键的事件同类的函数还包括onKeyUp()函数,其参数int keyCode为按键码,KeyEvent msg表示按键事件的消息(其中包含了更详细的内容)。 上面打出的log信息为:

VERBOSE/TestKeyEvent(771): onKeyDown: keyCode =  20

VERBOSE/TestKeyEvent(771): onKeyDown: String =  KeyEvent{action=0 code=20 repeat=0 meta=0 scancode=108 mFlags=8}

基本上通过keyCode可以获得是哪一个按键响应,而通过msg除了按键码之外,可以获得按键的动作(抬起、按下)、重复信息,扫描码等内容。 KeyEvent主要包含以下一些接口:

final int  getAction()          // 获得按键的动作

final int  getFlags()           // 获得标志

final int  getKeyCode()         // 获得按键码

final int  getRepeatCount()    // 获得重复的信息

final int  getScanCode()        // 获得扫描码

通过KeyEvent接口可以获得按键相关的详细信息。

posted @ 2013-06-17 20:27  只爱、娜女孩  阅读(340)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3