日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

键盘事件的响应

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 键盘事件的响应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在應用的程序的控制方面,更多的使用的是屏幕上的控件,但是有的時候也需要直接對鍵盤事件來進行響應。鍵盤是Android中主要的輸入設備,對按鍵的響應的處理是響應之間在程序中使用鍵盤的核心內容。
本例需要實現的內容是通過鍵盤來控制屏幕上的一個圖片的Alpha值,使用上鍵和右鍵增加圖片的Alpha值,使用下鍵和左鍵減少圖片的Alpha值。顯示內容如下所示:

本例的布局文件testkeyevent.xml如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView android:id="@+id/alphavalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<ImageView android:id="@+id/image"
android:src="@drawable/robot"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
本例包含了一個文本框和一個顯示圖片的控件,這樣可以文本框用作顯示當前的Alpha的比例值,顯示圖片的控件ImageView用于顯示一個圖片。
本例的源代碼實現如下所示:
package com.android.basicapp;
import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.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接口,可以獲得按鍵相關的詳細信息。

轉載于:https://www.cnblogs.com/ruiati/p/3314233.html

總結

以上是生活随笔為你收集整理的键盘事件的响应的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。