下面列出了android.view.KeyEvent#KEYCODE_PLUS 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (isEnabled()) {
int increment = mKeyProgressIncrement;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = -increment;
// fallthrough
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
case KeyEvent.KEYCODE_EQUALS:
increment = isLayoutRtl() ? -increment : increment;
if (setProgressInternal(getProgress() + increment, true, true)) {
onKeyChange();
return true;
}
break;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int increment = selectedColorIndex;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = Utils.isRTL() ? increment + 1 : increment -1;
if(increment < 0){
return false;
}
setSelectedColorPosition(increment);
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
increment = Utils.isRTL() ? increment - 1 : increment + 1;
if(increment >= colors.length){
return false;
}
setSelectedColorPosition(increment);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int increment = selectedColorIndex;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = Utils.isRTL() ? increment + 1 : increment -1;
if(increment < 0){
return false;
}
setSelectedColorPosition(increment);
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
increment = Utils.isRTL() ? increment - 1 : increment + 1;
if(increment >= colors.length){
return false;
}
setSelectedColorPosition(increment);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int increment = selectedColorIndex;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = Utils.isRTL() ? increment + 1 : increment -1;
if(increment < 0){
return false;
}
setSelectedColorPosition(increment);
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
increment = Utils.isRTL() ? increment - 1 : increment + 1;
if(increment >= colors.length){
return false;
}
setSelectedColorPosition(increment);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (isEnabled()) {
int increment = mKeyProgressIncrement;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = -increment;
// fallthrough
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
case KeyEvent.KEYCODE_EQUALS:
if (setProgressInternal(getProgressStart() - increment, getProgressEnd() + increment, true, true)) {
onKeyChange();
return true;
}
break;
}
}
return super.onKeyDown(keyCode, event);
}
private Float calculateIncrementForKey(int keyCode) {
// If this is a long press, increase the increment so it will only take around 20 steps.
// Otherwise choose the smallest valid increment.
float increment = isLongPress ? calculateStepIncrement(20) : calculateStepIncrement();
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
return isRtl() ? increment : -increment;
case KeyEvent.KEYCODE_DPAD_RIGHT:
return isRtl() ? -increment : increment;
case KeyEvent.KEYCODE_MINUS:
return -increment;
case KeyEvent.KEYCODE_EQUALS:
// Numpad Plus == Shift + Equals, at least in AVD, so fall through.
case KeyEvent.KEYCODE_PLUS:
return increment;
default:
return null;
}
}
private Boolean onKeyDownNoActiveThumb(int keyCode, @NonNull KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_TAB:
if (event.hasNoModifiers()) {
return moveFocus(1);
}
if (event.isShiftPressed()) {
return moveFocus(-1);
}
return false;
case KeyEvent.KEYCODE_DPAD_LEFT:
moveFocusInAbsoluteDirection(-1);
return true;
case KeyEvent.KEYCODE_MINUS:
moveFocus(-1);
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
moveFocusInAbsoluteDirection(1);
return true;
case KeyEvent.KEYCODE_EQUALS:
// Numpad Plus == Shift + Equals, at least in AVD, so fall through.
case KeyEvent.KEYCODE_PLUS:
moveFocus(1);
return true;
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
activeThumbIdx = focusedThumbIdx;
postInvalidate();
return true;
default:
// Nothing to do in this case.
}
return null;
}
@Test
public void testMoveThumbFocus_plusMinus_correctThumbHasFocus() {
slider.requestFocus();
KeyEventBuilder plus = new KeyEventBuilder(KeyEvent.KEYCODE_PLUS);
KeyEventBuilder minus = new KeyEventBuilder(KeyEvent.KEYCODE_MINUS);
sendKeyEventThereAndBack(plus, minus);
}