Android的自定义键盘颜色,android自定义键盘(解决弹出提示的字体颜色问题)

最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置、力度、指尖接触屏幕的面积等参数。 在写自定义键盘的时

最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置、力度、指尖接触屏幕的面积等参数。

在写自定义键盘的时候,用到了国内网上的一些代码,出处是

向先人致敬!

然后发现down下来的代码用到我的项目时,出现了各种问题:

1.首先,是一打开应用,就会出现弹出的是系统的输入法键盘,而是不自定义键盘,这个问题是由于

android:focusable="true"

android:focusableInTouchMode="true"

那么在

et.setOnTouchListener(new View.OnTouchListener(){

@Override

public boolean onTouch(View v, MotionEvent event) {

int inputback = et.getInputType();

et.setInputType(InputType.TYPE_NULL);

AdvantageKeyboard kb = new AdvantageKeyboard(act,ctx,et);

kb.showKeyboard();

et.setInputType(inputback);

v.performClick();

return false;

}

});

2.点击时,键盘弹出的提示框里面没有字体。例如这样

4e7d0d44ce381f3397d220df1dbfda10.png

这是由于显示的字体时白色,而背景也是白色导致的。后来各种百度,有人说是因为

在我们自定义的

 

android:id="@+id/keyboard_view"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:focusable="true"

android:focusableInTouchMode="true"

android:background="@color/black"

android:keyBackground="@drawable/btn_keyboard_key"

android:keyPreviewLayout="@layout/key_preview_layout"

android:keyTextColor="@color/white"

android:visibility="gone" />

然后在layout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="40sp"

android:textColor="@android:color/white"

android:gravity="center"

android:background="#ff8888ff"/>

其中

b9de68bea7bae9367d4fd36aad2279b6.png

3.加入键盘的触摸响应,并记录点击的相关信息(力度,接触面积,,落点坐标等)。

我们可以在自定义键盘中的构造函数中对keyboardView加入触摸监听器,例如这样写构造方法。

public AdvantageKeyboard(Activity act, Context ctx, EditText edit) {

this.act = act;

this.ctx = ctx;

this.ed = edit;

kb_letter = new Keyboard(this.ctx, R.xml.qwerty);

kb_number = new Keyboard(this.ctx, R.xml.symbols);

keyboardView = (KeyboardView) this.act.findViewById(R.id.keyboard_view);

keyboardView.setKeyboard(kb_number);

is_nun = true;

keyboardView.setEnabled(true);

keyboardView.setPreviewEnabled(true);

keyboardView.setOnKeyboardActionListener(action_listener);

keyboardView.setOnTouchListener(touch_listener);//加入触摸监听器

}

然后

private OnTouchListener touch_listener = new OnTouchListener(){

@Override

public boolean onTouch(View v, android.view.MotionEvent event) {

float pressure, size, rx, ry, x, y, interval;

long time, down_time;

int action = event.getAction();

switch (action) {

case (MotionEvent.ACTION_DOWN):

pressure = event.getPressure();

size = event.getSize();

time = event.getEventTime();

down_time = event.getDownTime();

x = event.getX();

y = event.getY();

rx = event.getRawX();

ry = event.getRawY();

interval = (float) 0.0;

if(is_first_press){

interval = down_time - last_down_time;

}

is_first_press = true;

last_down_time = down_time;

Log.i("!!!!!!!!!","pressure:"+String.valueOf(pressure)+"\n"

+"size:"+String.valueOf(size)+"\n"

+"time:"+String.valueOf(time)+"\n"

+"downtime:"+String.valueOf(down_time)+"\n"

+"x:"+String.valueOf(x)+" y:"+String.valueOf(y)+"\n"

+"rx:"+String.valueOf(rx)+" ry:"+String.valueOf(ry)+"\n"

+"interval:"+String.valueOf(interval)+"\n");

break;

case (MotionEvent.ACTION_UP):

v.performClick();

break;

case (MotionEvent.ACTION_MOVE):

break;

}

return false;

}

};

然后搞定了...

源码下载:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值