forked from extern/Unexpected-Keyboard
Set the color of the navigation bar
Since SDK 21, applications can set the background color of the navigation bar. This is normally simply an item in a theme but it is more complicated for keyboards.
This commit is contained in:
parent
80600ed659
commit
7da7a5082d
@ -20,10 +20,20 @@
|
|||||||
<attr name="emoji_color" type="color" format="color"/>
|
<attr name="emoji_color" type="color" format="color"/>
|
||||||
<attr name="emoji_key_bg" type="color" format="color"/>
|
<attr name="emoji_key_bg" type="color" format="color"/>
|
||||||
<attr name="emoji_key_text" type="color" format="color"/>
|
<attr name="emoji_key_text" type="color" format="color"/>
|
||||||
|
<!-- System integration -->
|
||||||
|
<attr name="navigationBarColor" format="color"/>
|
||||||
|
<attr name="windowLightNavigationBar" format="boolean"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
<style name="Dark">
|
<style name="BaseTheme">
|
||||||
<item name="android:isLightTheme">false</item>
|
|
||||||
<item name="android:forceDarkAllowed">false</item>
|
<item name="android:forceDarkAllowed">false</item>
|
||||||
|
<item name="navigationBarColor">?attr/colorKeyboard</item>
|
||||||
|
<item name="windowLightNavigationBar">?attr/android:isLightTheme</item>
|
||||||
|
<item name="keyBorderRadius">5dp</item>
|
||||||
|
<item name="emoji_key_bg" type="color">?attr/emoji_button_bg</item>
|
||||||
|
<item name="emoji_key_text" type="color">?attr/colorLabel</item>
|
||||||
|
</style>
|
||||||
|
<style name="Dark" parent="BaseTheme">
|
||||||
|
<item name="android:isLightTheme">false</item>
|
||||||
<item name="colorKeyboard">#1b1b1b</item>
|
<item name="colorKeyboard">#1b1b1b</item>
|
||||||
<item name="colorKey">#333333</item>
|
<item name="colorKey">#333333</item>
|
||||||
<item name="colorKeyActivated">#1b1b1b</item>
|
<item name="colorKeyActivated">#1b1b1b</item>
|
||||||
@ -31,15 +41,11 @@
|
|||||||
<item name="colorLabelActivated">#3399ff</item>
|
<item name="colorLabelActivated">#3399ff</item>
|
||||||
<item name="colorLabelLocked">#33cc33</item>
|
<item name="colorLabelLocked">#33cc33</item>
|
||||||
<item name="colorSubLabel">#cccccc</item>
|
<item name="colorSubLabel">#cccccc</item>
|
||||||
<item name="keyBorderRadius">5dp</item>
|
|
||||||
<item name="emoji_button_bg" type="color">#202020</item>
|
<item name="emoji_button_bg" type="color">#202020</item>
|
||||||
<item name="emoji_color" type="color">#ffffff</item>
|
<item name="emoji_color" type="color">#ffffff</item>
|
||||||
<item name="emoji_key_bg" type="color">?attr/emoji_button_bg</item>
|
|
||||||
<item name="emoji_key_text" type="color">?attr/colorLabel</item>
|
|
||||||
</style>
|
</style>
|
||||||
<style name="Light">
|
<style name="Light" parent="BaseTheme">
|
||||||
<item name="android:isLightTheme">true</item>
|
<item name="android:isLightTheme">true</item>
|
||||||
<item name="android:forceDarkAllowed">false</item>
|
|
||||||
<item name="colorKeyboard">#e3e3e3</item>
|
<item name="colorKeyboard">#e3e3e3</item>
|
||||||
<item name="colorKey">#cccccc</item>
|
<item name="colorKey">#cccccc</item>
|
||||||
<item name="colorKeyActivated">#e3e3e3</item>
|
<item name="colorKeyActivated">#e3e3e3</item>
|
||||||
@ -47,15 +53,11 @@
|
|||||||
<item name="colorLabelActivated">#0066cc</item>
|
<item name="colorLabelActivated">#0066cc</item>
|
||||||
<item name="colorLabelLocked">#33cc33</item>
|
<item name="colorLabelLocked">#33cc33</item>
|
||||||
<item name="colorSubLabel">#333333</item>
|
<item name="colorSubLabel">#333333</item>
|
||||||
<item name="keyBorderRadius">5dp</item>
|
<item name="emoji_button_bg">#dedede</item>
|
||||||
<item name="emoji_button_bg" type="color">#dedede</item>
|
<item name="emoji_color">#000000</item>
|
||||||
<item name="emoji_color" type="color">#000000</item>
|
|
||||||
<item name="emoji_key_bg" type="color">?attr/emoji_button_bg</item>
|
|
||||||
<item name="emoji_key_text" type="color">?attr/colorLabel</item>
|
|
||||||
</style>
|
</style>
|
||||||
<style name="Black">
|
<style name="Black" parent="BaseTheme">
|
||||||
<item name="android:isLightTheme">false</item>
|
<item name="android:isLightTheme">false</item>
|
||||||
<item name="android:forceDarkAllowed">false</item>
|
|
||||||
<item name="colorKeyboard">#000000</item>
|
<item name="colorKeyboard">#000000</item>
|
||||||
<item name="colorKey">#000000</item>
|
<item name="colorKey">#000000</item>
|
||||||
<item name="colorKeyActivated">#333333</item>
|
<item name="colorKeyActivated">#333333</item>
|
||||||
@ -64,9 +66,7 @@
|
|||||||
<item name="colorLabelLocked">#00ff26</item>
|
<item name="colorLabelLocked">#00ff26</item>
|
||||||
<item name="colorSubLabel">#bbbbbb</item>
|
<item name="colorSubLabel">#bbbbbb</item>
|
||||||
<item name="keyBorderRadius">1dp</item>
|
<item name="keyBorderRadius">1dp</item>
|
||||||
<item name="emoji_button_bg" type="color">#000000</item>
|
<item name="emoji_button_bg">#000000</item>
|
||||||
<item name="emoji_color" type="color">#ffffff</item>
|
<item name="emoji_color">#ffffff</item>
|
||||||
<item name="emoji_key_bg" type="color">?attr/emoji_button_bg</item>
|
|
||||||
<item name="emoji_key_text" type="color">?attr/colorLabel</item>
|
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
package juloo.keyboard2;
|
package juloo.keyboard2;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.ContextWrapper;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
|
import android.inputmethodservice.InputMethodService;
|
||||||
|
import android.os.Build.VERSION;
|
||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.Window;
|
||||||
|
|
||||||
public class Keyboard2View extends View
|
public class Keyboard2View extends View
|
||||||
implements View.OnTouchListener, Pointers.IPointerEventHandler
|
implements View.OnTouchListener, Pointers.IPointerEventHandler
|
||||||
@ -49,10 +53,35 @@ public class Keyboard2View extends View
|
|||||||
_theme = new Theme(getContext(), attrs);
|
_theme = new Theme(getContext(), attrs);
|
||||||
_config = Config.globalConfig();
|
_config = Config.globalConfig();
|
||||||
_pointers = new Pointers(this, _config);
|
_pointers = new Pointers(this, _config);
|
||||||
|
refresh_navigation_bar(context);
|
||||||
setOnTouchListener(this);
|
setOnTouchListener(this);
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Window getParentWindow(Context context)
|
||||||
|
{
|
||||||
|
if (context instanceof InputMethodService)
|
||||||
|
return ((InputMethodService)context).getWindow().getWindow();
|
||||||
|
if (context instanceof ContextWrapper)
|
||||||
|
return getParentWindow(((ContextWrapper)context).getBaseContext());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refresh_navigation_bar(Context context)
|
||||||
|
{
|
||||||
|
if (VERSION.SDK_INT < 21)
|
||||||
|
return;
|
||||||
|
// The intermediate Window is a [Dialog].
|
||||||
|
Window w = getParentWindow(context);
|
||||||
|
int uiFlags = getSystemUiVisibility();
|
||||||
|
if (_theme.isLightNavBar)
|
||||||
|
uiFlags |= View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
|
||||||
|
else
|
||||||
|
uiFlags &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
|
||||||
|
w.setNavigationBarColor(_theme.colorNavBar);
|
||||||
|
setSystemUiVisibility(uiFlags);
|
||||||
|
}
|
||||||
|
|
||||||
public void setKeyboard(KeyboardData kw)
|
public void setKeyboard(KeyboardData kw)
|
||||||
{
|
{
|
||||||
_keyboard = _config.modify_layout(kw);
|
_keyboard = _config.modify_layout(kw);
|
||||||
|
@ -18,6 +18,9 @@ public class Theme
|
|||||||
|
|
||||||
public final float keyBorderRadius;
|
public final float keyBorderRadius;
|
||||||
|
|
||||||
|
public final int colorNavBar;
|
||||||
|
public final boolean isLightNavBar;
|
||||||
|
|
||||||
private final Paint _keyLabelPaint;
|
private final Paint _keyLabelPaint;
|
||||||
private final Paint _specialKeyLabelPaint;
|
private final Paint _specialKeyLabelPaint;
|
||||||
private final Paint _keySubLabelPaint;
|
private final Paint _keySubLabelPaint;
|
||||||
@ -29,6 +32,8 @@ public class Theme
|
|||||||
keyBgPaint.setColor(s.getColor(R.styleable.keyboard_colorKey, 0));
|
keyBgPaint.setColor(s.getColor(R.styleable.keyboard_colorKey, 0));
|
||||||
keyDownBgPaint.setColor(s.getColor(R.styleable.keyboard_colorKeyActivated, 0));
|
keyDownBgPaint.setColor(s.getColor(R.styleable.keyboard_colorKeyActivated, 0));
|
||||||
// colorKeyboard = s.getColor(R.styleable.keyboard_colorKeyboard, 0);
|
// colorKeyboard = s.getColor(R.styleable.keyboard_colorKeyboard, 0);
|
||||||
|
colorNavBar = s.getColor(R.styleable.keyboard_navigationBarColor, 0);
|
||||||
|
isLightNavBar = s.getBoolean(R.styleable.keyboard_windowLightNavigationBar, false);
|
||||||
labelColor = s.getColor(R.styleable.keyboard_colorLabel, 0);
|
labelColor = s.getColor(R.styleable.keyboard_colorLabel, 0);
|
||||||
activatedColor = s.getColor(R.styleable.keyboard_colorLabelActivated, 0);
|
activatedColor = s.getColor(R.styleable.keyboard_colorLabelActivated, 0);
|
||||||
lockedColor = s.getColor(R.styleable.keyboard_colorLabelLocked, 0);
|
lockedColor = s.getColor(R.styleable.keyboard_colorLabelLocked, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user