300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android的自定义键盘颜色 android自定义键盘(解决弹出提示的字体颜色问题)

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

时间:2022-07-18 20:33:45

相关推荐

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.点击时,键盘弹出的提示框里面没有字体。例如这样

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

在我们自定义的

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"/>

其中

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;

}

};

然后搞定了...

源码下载:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。