Dim keyboard when more suggestions are shown
Bug: 5241009 Change-Id: Ia42bcfc34dddf93d35f9cea8a4f0efead6ce3a6a
This commit is contained in:
parent
913e2aeef2
commit
1b087064c0
3 changed files with 29 additions and 23 deletions
|
@ -103,6 +103,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
private ViewGroup mPreviewPlacer;
|
||||
|
||||
// Drawing
|
||||
/** True if the entire keyboard needs to be dimmed. */
|
||||
private boolean mNeedsToDimBackground;
|
||||
/** Whether the keyboard bitmap buffer needs to be redrawn before it's blitted. **/
|
||||
private boolean mBufferNeedsUpdate;
|
||||
/** The dirty region in the keyboard bitmap */
|
||||
|
@ -481,8 +483,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
}
|
||||
}
|
||||
|
||||
// Overlay a dark rectangle to dim the keyboard
|
||||
if (needsToDimKeyboard()) {
|
||||
// Overlay a dark rectangle to dim the entire keyboard
|
||||
if (mNeedsToDimBackground) {
|
||||
mPaint.setColor((int) (mBackgroundDimAmount * 0xFF) << 24);
|
||||
canvas.drawRect(0, 0, width, height, mPaint);
|
||||
}
|
||||
|
@ -491,8 +493,12 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
mDirtyRect.setEmpty();
|
||||
}
|
||||
|
||||
protected boolean needsToDimKeyboard() {
|
||||
return false;
|
||||
public void dimEntireKeyboard(boolean dimmed) {
|
||||
final boolean needsRedrawing = mNeedsToDimBackground != dimmed;
|
||||
mNeedsToDimBackground = dimmed;
|
||||
if (needsRedrawing) {
|
||||
invalidateAllKeys();
|
||||
}
|
||||
}
|
||||
|
||||
private static void onBufferDrawKey(final Key key, final Keyboard keyboard, final Canvas canvas,
|
||||
|
|
|
@ -373,11 +373,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
|||
return miniKeyboardView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean needsToDimKeyboard() {
|
||||
return mMoreKeysPanel != null;
|
||||
}
|
||||
|
||||
public void setSpacebarTextFadeFactor(float fadeFactor, LatinKeyboard oldKeyboard) {
|
||||
final Keyboard keyboard = getKeyboard();
|
||||
// We should not set text fade factor to the keyboard which does not display the language on
|
||||
|
@ -460,8 +455,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
|||
final int translatedY = moreKeysPanel.translateY(tracker.getLastY());
|
||||
tracker.onShowMoreKeysPanel(
|
||||
translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel);
|
||||
|
||||
invalidateAllKeys();
|
||||
dimEntireKeyboard(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -620,7 +614,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
|||
mMoreKeysWindow.dismiss();
|
||||
mMoreKeysPanel = null;
|
||||
mMoreKeysPanelPointerTrackerId = -1;
|
||||
invalidateAllKeys();
|
||||
dimEntireKeyboard(false);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -50,6 +50,7 @@ import android.widget.TextView;
|
|||
import com.android.inputmethod.compat.FrameLayoutCompatUtils;
|
||||
import com.android.inputmethod.compat.LinearLayoutCompatUtils;
|
||||
import com.android.inputmethod.keyboard.KeyboardActionListener;
|
||||
import com.android.inputmethod.keyboard.KeyboardView;
|
||||
import com.android.inputmethod.keyboard.MoreKeysPanel;
|
||||
import com.android.inputmethod.keyboard.PointerTracker;
|
||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
|
@ -70,7 +71,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
|
||||
private final ViewGroup mSuggestionsPlacer;
|
||||
private final ViewGroup mSuggestionsStrip;
|
||||
private View mKeyboardView;
|
||||
private KeyboardView mKeyboardView;
|
||||
|
||||
private final View mMoreSuggestionsContainer;
|
||||
private final MoreSuggestionsView mMoreSuggestionsView;
|
||||
|
@ -515,7 +516,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
*/
|
||||
public void setListener(Listener listener, View inputView) {
|
||||
mListener = listener;
|
||||
mKeyboardView = inputView.findViewById(R.id.keyboard_view);
|
||||
mKeyboardView = (KeyboardView)inputView.findViewById(R.id.keyboard_view);
|
||||
}
|
||||
|
||||
public void setSuggestions(SuggestedWords suggestions) {
|
||||
|
@ -658,7 +659,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
mSuggestionsPlacer.removeAllViews();
|
||||
mSuggestionsPlacer.addView(mSuggestionsStrip);
|
||||
mSuggestionsStrip.removeAllViews();
|
||||
mMoreSuggestionsWindow.dismiss();
|
||||
dismissMoreSuggestions();
|
||||
}
|
||||
|
||||
private void hidePreview() {
|
||||
|
@ -702,13 +703,13 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
final int index = requestCode;
|
||||
final CharSequence word = mSuggestions.getWord(index);
|
||||
mListener.pickSuggestionManually(index, word);
|
||||
mMoreSuggestionsView.dismissMoreKeysPanel();
|
||||
dismissMoreSuggestions();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelInput() {
|
||||
mMoreSuggestionsView.dismissMoreKeysPanel();
|
||||
dismissMoreSuggestions();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -716,14 +717,19 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
new MoreKeysPanel.Controller() {
|
||||
@Override
|
||||
public boolean dismissMoreKeysPanel() {
|
||||
if (mMoreSuggestionsWindow.isShowing()) {
|
||||
mMoreSuggestionsWindow.dismiss();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return dismissMoreSuggestions();
|
||||
}
|
||||
};
|
||||
|
||||
private boolean dismissMoreSuggestions() {
|
||||
if (mMoreSuggestionsWindow.isShowing()) {
|
||||
mMoreSuggestionsWindow.dismiss();
|
||||
mKeyboardView.dimEntireKeyboard(false);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View view) {
|
||||
final SuggestionsStripParams params = mStripParams;
|
||||
|
@ -754,7 +760,7 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
|
|||
tracker.onShowMoreKeysPanel(
|
||||
translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel);
|
||||
view.setPressed(false);
|
||||
// TODO: Should gray out the keyboard here as well?
|
||||
mKeyboardView.dimEntireKeyboard(true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue