mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-25 01:07:47 +00:00
parent
13bad6dfed
commit
7c32e5b1fb
@ -43,8 +43,7 @@ import java.util.Set;
|
|||||||
public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
|
public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
|
||||||
private static final String TAG = KeyboardAwareLinearLayout.class.getSimpleName();
|
private static final String TAG = KeyboardAwareLinearLayout.class.getSimpleName();
|
||||||
|
|
||||||
private final Rect oldRect = new Rect();
|
private final Rect rect = new Rect();
|
||||||
private final Rect newRect = new Rect();
|
|
||||||
private final Set<OnKeyboardHiddenListener> hiddenListeners = new HashSet<>();
|
private final Set<OnKeyboardHiddenListener> hiddenListeners = new HashSet<>();
|
||||||
private final Set<OnKeyboardShownListener> shownListeners = new HashSet<>();
|
private final Set<OnKeyboardShownListener> shownListeners = new HashSet<>();
|
||||||
private final int minKeyboardSize;
|
private final int minKeyboardSize;
|
||||||
@ -87,26 +86,29 @@ public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
|
|||||||
int oldRotation = rotation;
|
int oldRotation = rotation;
|
||||||
rotation = getDeviceRotation();
|
rotation = getDeviceRotation();
|
||||||
if (oldRotation != rotation) {
|
if (oldRotation != rotation) {
|
||||||
|
Log.w(TAG, "rotation changed");
|
||||||
onKeyboardClose();
|
onKeyboardClose();
|
||||||
oldRect.setEmpty();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateKeyboardState() {
|
private void updateKeyboardState() {
|
||||||
if (viewInset == 0 && Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) viewInset = getViewInset();
|
if (isLandscape()) {
|
||||||
final int availableHeight = this.getRootView().getHeight() - statusBarHeight - viewInset;
|
if (keyboardOpen) onKeyboardClose();
|
||||||
getWindowVisibleDisplayFrame(newRect);
|
return;
|
||||||
|
|
||||||
final int oldKeyboardHeight = availableHeight - (oldRect.bottom - oldRect.top);
|
|
||||||
final int keyboardHeight = availableHeight - (newRect.bottom - newRect.top);
|
|
||||||
|
|
||||||
if (keyboardHeight - oldKeyboardHeight > minKeyboardSize && !keyboardOpen) {
|
|
||||||
onKeyboardOpen(keyboardHeight);
|
|
||||||
} else if (oldKeyboardHeight - keyboardHeight > minKeyboardSize && keyboardOpen) {
|
|
||||||
onKeyboardClose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
oldRect.set(newRect);
|
if (viewInset == 0 && Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) viewInset = getViewInset();
|
||||||
|
final int availableHeight = this.getRootView().getHeight() - statusBarHeight - viewInset;
|
||||||
|
getWindowVisibleDisplayFrame(rect);
|
||||||
|
|
||||||
|
final int keyboardHeight = availableHeight - (rect.bottom - rect.top);
|
||||||
|
|
||||||
|
if (keyboardHeight > minKeyboardSize) {
|
||||||
|
if (getKeyboardHeight() != keyboardHeight) setKeyboardPortraitHeight(keyboardHeight);
|
||||||
|
if (!keyboardOpen) onKeyboardOpen(keyboardHeight);
|
||||||
|
} else if (keyboardOpen) {
|
||||||
|
onKeyboardClose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||||
@ -130,15 +132,14 @@ public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void onKeyboardOpen(int keyboardHeight) {
|
protected void onKeyboardOpen(int keyboardHeight) {
|
||||||
|
Log.w(TAG, "onKeyboardOpen(" + keyboardHeight + ")");
|
||||||
keyboardOpen = true;
|
keyboardOpen = true;
|
||||||
|
|
||||||
if (!isLandscape()) {
|
|
||||||
setKeyboardPortraitHeight(keyboardHeight);
|
|
||||||
}
|
|
||||||
notifyShownListeners();
|
notifyShownListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onKeyboardClose() {
|
protected void onKeyboardClose() {
|
||||||
|
Log.w(TAG, "onKeyboardClose()");
|
||||||
keyboardOpen = false;
|
keyboardOpen = false;
|
||||||
notifyHiddenListeners();
|
notifyHiddenListeners();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user