Dim keyboard when more suggestions are shown

Bug: 5241009
Change-Id: Ia42bcfc34dddf93d35f9cea8a4f0efead6ce3a6a
main
Tadashi G. Takaoka 2011-09-01 17:50:51 +09:00
parent 913e2aeef2
commit 1b087064c0
3 changed files with 29 additions and 23 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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,13 +717,18 @@ public class SuggestionsView extends LinearLayout implements OnClickListener, On
new MoreKeysPanel.Controller() {
@Override
public boolean dismissMoreKeysPanel() {
return dismissMoreSuggestions();
}
};
private boolean dismissMoreSuggestions() {
if (mMoreSuggestionsWindow.isShowing()) {
mMoreSuggestionsWindow.dismiss();
mKeyboardView.dimEntireKeyboard(false);
return true;
}
return false;
}
};
@Override
public boolean onLongClick(View view) {
@ -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;