Android 自定义的数字键盘 支持随意拖动 和稳定的字符输入的控件

本文介绍了一种自定义的Android数字键盘控件,该控件支持用户随意拖动,并能稳定地进行数字和其他字符的输入。通过实现IKeyBoardListener接口,可以处理插入字符、结束输入、删除字符以及长按清除等功能。具体实现包括在OnTouchListener中禁用系统输入法,以及在ACTION_UP事件中显示自定义键盘。
摘要由CSDN通过智能技术生成


经过 研究 实现了自定义 键盘 ,支持随意拖动 和数字及其他字符输入 

下面是主要的代码 和使用方法


import android.content.Context;

import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;


import com.only.onlybiapp.AppContext;
import com.only.onlybiapp.R;
import com.only.onlybiapp.interfaces.IKeyBoardListener;



// 这个是自定义的键盘控件


public class NumKeyBoardLinearLayout extends LinearLayout implements
View.OnClickListener, OnGestureListener {


private Context mContext;


private View v;


private Button button_numkeyboard_one;// 数字一


private Button button_numkeyboard_two;// 数字二


private Button button_numkeyboard_three;// 数字三


private Button button_numkeyboard_four;// 数字四


private Button button_numkeyboard_five;// 数字五


private Button button_numkeyboard_six;// 数字六


private Button button_numkeyboard_seven;// 数字七


private Button button_numkeyboard_eight;// 数字八


private Button button_numkeyboard_nine;// 数字九


private Button button_numkeyboard_comma;// 符号逗号


private Button button_numkeyboard_zero;// 数字零


private Button button_numkeyboard_point;// 符号点


private Button button_numkeyboard_scale;// 符号百分比


private Button button_numkeyboard_zeros;// 数字两个零


private Button button_numkeyboard_clear;// 清空


private Button button_numkeyboard_comfirm;// 确认


boolean isMoveEvent = false; // 是否是拖动输入法


private float startX = 0; // the first pointer index of x coordinate


private float startY = 0; // the first pointer index of Y coordinate


private float x;// the coordinate of X


private float y;// the coordinate of Y


private IKeyBoardListener iKeyBoardListener;


private final int fromLeft = -535; // 可以根据屏幕分辨率进行调整


private boolean isAdd = false;


GestureDetector detector;


public IKeyBoardListener getiKeyBoardListener() {
return iKeyBoardListener;
}


public void setiKeyBoardListener(IKeyBoardListener iKeyBoardListener) {
if (iKeyBoardListener != this.iKeyBoardListener) { // 换了一个editText
this.iKeyBoardListener = iKeyBoardListener;
}
}


private WindowManager wm = (WindowManager) getContext()
.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);


private WindowManager.LayoutParams wmlp = AppContext.getLayoutParams();


public NumKeyBoardLinearLayout(Context context) {
super(context);
this.mContext = context;
initView();
initData();
setListener();
}


private void initView() {
v = View.inflate(mContext
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值