mirror of
https://github.com/yuliskov/LeanKeyboard.git
synced 2026-05-02 21:02:37 -04:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70cfd73ac8 | ||
|
|
0a42892d2d | ||
|
|
c5c88e622d |
@@ -8,8 +8,8 @@ android {
|
||||
applicationId "org.liskovsoft.leankeykeyboard.pro"
|
||||
minSdkVersion project.properties.minSdkVersion
|
||||
targetSdkVersion project.properties.targetSdkVersion
|
||||
versionCode 77
|
||||
versionName "4.3.27"
|
||||
versionCode 78
|
||||
versionName "4.3.28"
|
||||
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -446,23 +446,23 @@ public class LeanbackKeyboardContainer {
|
||||
boolean overestimateHeight = false;
|
||||
switch (focus.type) {
|
||||
case KeyFocus.TYPE_MAIN:
|
||||
boolean showScale = false;
|
||||
overestimateHeight = true;
|
||||
if (focus.code != LeanbackKeyboardView.ASCII_SPACE) {
|
||||
overestimateWidth = true;
|
||||
} else {
|
||||
overestimateWidth = false;
|
||||
showScale = true;
|
||||
}
|
||||
|
||||
LeanbackKeyboardView mainView = mMainKeyboardView;
|
||||
int index = focus.index;
|
||||
|
||||
boolean isClicked = false;
|
||||
if (mTouchState == TOUCH_STATE_CLICK) {
|
||||
overestimateHeight = true;
|
||||
} else {
|
||||
overestimateHeight = false;
|
||||
isClicked = true;
|
||||
}
|
||||
|
||||
mainView.setFocus(index, overestimateHeight, overestimateWidth);
|
||||
mainView.setFocus(index, isClicked, showScale);
|
||||
mPrevView = mMainKeyboardView;
|
||||
overestimateHeight = true;
|
||||
break;
|
||||
case KeyFocus.TYPE_VOICE:
|
||||
mVoiceButtonView.setMicFocused(true);
|
||||
@@ -594,7 +594,12 @@ public class LeanbackKeyboardContainer {
|
||||
mSelector.setX(translatedX);
|
||||
mSelector.setY(translatedY);
|
||||
} else {
|
||||
mSelector.animate().x(translatedX).y(translatedY).setInterpolator(sMovementInterpolator).setDuration(MOVEMENT_ANIMATION_DURATION).start();
|
||||
mSelector.animate()
|
||||
.x(translatedX)
|
||||
.y(translatedY)
|
||||
.setInterpolator(sMovementInterpolator)
|
||||
.setDuration(MOVEMENT_ANIMATION_DURATION)
|
||||
.start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -853,7 +858,7 @@ public class LeanbackKeyboardContainer {
|
||||
}
|
||||
|
||||
public boolean isVoiceVisible() {
|
||||
return mVoiceButtonView.getVisibility() == 0;
|
||||
return mVoiceButtonView.getVisibility() == View.VISIBLE;
|
||||
}
|
||||
|
||||
public void onInitInputView() {
|
||||
@@ -1031,6 +1036,10 @@ public class LeanbackKeyboardContainer {
|
||||
setKbFocus(focus, false, true);
|
||||
}
|
||||
|
||||
public void setFocus(LeanbackKeyboardContainer.KeyFocus focus, final boolean animate) {
|
||||
setKbFocus(focus, false, animate);
|
||||
}
|
||||
|
||||
public void setSelectorToFocus(Rect rect, boolean overestimateWidth, boolean overestimateHeight, boolean animate) {
|
||||
if (this.mSelector.getWidth() != 0 && this.mSelector.getHeight() != 0 && rect.width() != 0 && rect.height() != 0) {
|
||||
final float width = (float) rect.width();
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.google.android.leanback.ime;
|
||||
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.inputmethodservice.InputMethodService;
|
||||
import android.inputmethodservice.Keyboard.Key;
|
||||
import android.os.Handler;
|
||||
@@ -51,7 +50,7 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi
|
||||
private LeanbackKeyboardContainer.KeyFocus mTempFocus;
|
||||
private PointF mTempPoint;
|
||||
private LeanbackKeyboardController.TouchEventListener mTouchEventListener;
|
||||
private long prevTime;
|
||||
private long mPrevTime;
|
||||
private boolean mShowInput;
|
||||
private int mLastEditorIdPhysicalKeyboardWasUsed;
|
||||
private boolean mHideKeyboardWhenPhysicalKeyboardUsed = true;
|
||||
@@ -500,15 +499,39 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi
|
||||
updatePositionToCurrentFocus();
|
||||
}
|
||||
|
||||
private boolean isCallAllowed(int periodMillis) {
|
||||
/**
|
||||
* Simple throttle routine.
|
||||
* @param callInterval interval
|
||||
* @return is allowed
|
||||
*/
|
||||
private boolean isCallAllowedOrigin(int callInterval) {
|
||||
long currTimeMS = System.currentTimeMillis();
|
||||
if (this.prevTime != 0L && currTimeMS - this.prevTime <= (long) (periodMillis * 3)) {
|
||||
if (currTimeMS - this.prevTime > (long) periodMillis) {
|
||||
this.prevTime = 0L;
|
||||
long timeDelta = currTimeMS - mPrevTime;
|
||||
if (mPrevTime != 0 && timeDelta <= (callInterval * 3)) {
|
||||
if (timeDelta > callInterval) {
|
||||
mPrevTime = 0;
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
this.prevTime = currTimeMS;
|
||||
mPrevTime = currTimeMS;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple throttle routine. Simplified comparing to previous. Not tested yet!!!!
|
||||
* @param interval interval
|
||||
* @return is allowed
|
||||
*/
|
||||
private boolean isCallAllowed2(int interval) {
|
||||
long currTimeMS = System.currentTimeMillis();
|
||||
long timeDelta = currTimeMS - mPrevTime;
|
||||
if (mPrevTime == 0) {
|
||||
mPrevTime = currTimeMS;
|
||||
return true;
|
||||
} else if (timeDelta > interval) {
|
||||
mPrevTime = 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -540,13 +563,10 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi
|
||||
}
|
||||
|
||||
private void moveSelectorToPoint(float x, float y) {
|
||||
LeanbackKeyboardContainer container = this.mContainer;
|
||||
LeanbackKeyboardContainer.KeyFocus focus = this.mTempFocus;
|
||||
container.getBestFocus(new Float(x), new Float(y), focus);
|
||||
this.mContainer.setFocus(this.mTempFocus);
|
||||
container = this.mContainer;
|
||||
Rect rect = this.mTempFocus.rect;
|
||||
container.alignSelector((float) rect.centerX(), (float) rect.centerY(), false);
|
||||
LeanbackKeyboardContainer container = mContainer;
|
||||
LeanbackKeyboardContainer.KeyFocus focus = mTempFocus;
|
||||
container.getBestFocus(x, y, focus);
|
||||
mContainer.setFocus(mTempFocus, false);
|
||||
}
|
||||
|
||||
private boolean onDirectionalMove(int dir) {
|
||||
@@ -634,21 +654,21 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to handle on hover event
|
||||
* Control keyboard from the mouse. Movement catching
|
||||
* @param view active view
|
||||
* @param event event object
|
||||
* @return is hover handled
|
||||
*/
|
||||
@Override
|
||||
public boolean onHover(View view, MotionEvent event) {
|
||||
boolean allowed = isCallAllowed(300);
|
||||
if (allowed) {
|
||||
if (event.getAction() == MotionEvent.ACTION_HOVER_MOVE) {
|
||||
PointF pos = getRelativePosition(mContainer.getView(), event);
|
||||
moveSelectorToPoint(pos.x, pos.y);
|
||||
}
|
||||
boolean handled = false;
|
||||
if (event.getAction() == MotionEvent.ACTION_HOVER_MOVE) {
|
||||
PointF pos = getRelativePosition(mContainer.getView(), event);
|
||||
moveSelectorToPoint(pos.x, pos.y);
|
||||
handled = true;
|
||||
}
|
||||
|
||||
return allowed;
|
||||
return handled;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -523,8 +523,12 @@ public class LeanbackKeyboardView extends FrameLayout {
|
||||
}
|
||||
|
||||
mCurrentFocusView = mKeyImageViews[indexFull];
|
||||
mCurrentFocusView.animate().scaleX(scale).scaleY(scale).setInterpolator(LeanbackKeyboardContainer.sMovementInterpolator)
|
||||
.setDuration((long) mClickAnimDur).start();
|
||||
mCurrentFocusView.animate()
|
||||
.scaleX(scale)
|
||||
.scaleY(scale)
|
||||
.setInterpolator(LeanbackKeyboardContainer.sMovementInterpolator)
|
||||
.setDuration((long) mClickAnimDur)
|
||||
.start();
|
||||
}
|
||||
|
||||
mFocusIndex = indexFull;
|
||||
|
||||
Reference in New Issue
Block a user