关键词:
博客地址:
仿造android端闲鱼发布选择价格数字键盘,自定义数字键盘
public class MyKeyBoardView extends KeyboardView {
private Context mContext;
private Keyboard mKeyBoard;
public MyKeyBoardView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
}
public MyKeyBoardView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mContext = context;
}
/**
* 重新画一些按键
*/
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
mKeyBoard = this.getKeyboard();
List<Key> keys = null;
if (mKeyBoard != null) {
keys = mKeyBoard.getKeys();
}
if (keys != null) {
for (Key key : keys) {
// 数字键盘的处理
if (key.codes[0] == -4) {
drawKeyBackground(R.drawable.bg_keyboardview_yes, canvas, key);
drawText(canvas, key);
}
}
}
}
private void drawKeyBackground(int drawableId, Canvas canvas, Key key) {
Drawable npd = mContext.getResources().getDrawable(
drawableId);
int[] drawableState = key.getCurrentDrawableState();
if (key.codes[0] != 0) {
npd.setState(drawableState);
}
npd.setBounds(key.x, key.y, key.x + key.width, key.y
+ key.height);
npd.draw(canvas);
}
private void drawText(Canvas canvas, Key key) {
Rect bounds = new Rect();
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
if (key.label != null) {
String label = key.label.toString();
Field field;
if (label.length() > 1 && key.codes.length < 2) {
int labelTextSize = 0;
try {
field = KeyboardView.class.getDeclaredField("mLabelTextSize");
field.setAccessible(true);
labelTextSize = (int) field.get(this);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
paint.setTextSize(labelTextSize);
paint.setTypeface(Typeface.DEFAULT_BOLD);
} else {
int keyTextSize = 0;
try {
field = KeyboardView.class.getDeclaredField("mLabelTextSize");
field.setAccessible(true);
keyTextSize = (int) field.get(this);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
paint.setTextSize(keyTextSize);
paint.setTypeface(Typeface.DEFAULT);
}
paint.getTextBounds(key.label.toString(), 0, key.label.toString()
.length(), bounds);
canvas.drawText(key.label.toString(), key.x + (key.width / 2),
(key.y + key.height / 2) + bounds.height() / 2, paint);
} else if (key.icon != null) {
key.icon.setBounds(key.x + (key.width - key.icon.getIntrinsicWidth()) / 2, key.y + (key.height - key.icon.getIntrinsicHeight()) / 2,
key.x + (key.width - key.icon.getIntrinsicWidth()) / 2 + key.icon.getIntrinsicWidth(), key.y + (key.height - key.icon.getIntrinsicHeight()) / 2 + key.icon.getIntrinsicHeight());
key.icon.draw(canvas);
}
}
}
增加随机数字键盘 增加速记数字键盘,用于输入安全级别高的密码输入
private void randomKeyboardNumber() {
List<Keyboard.Key> keyList = mKeyboardNumber.getKeys();
// 查找出0-9的数字键
List<Keyboard.Key> newkeyList = new ArrayList<Keyboard.Key>();
for (int i = 0; i < keyList.size(); i++) {
if (keyList.get(i).label != null
&& isNumber(keyList.get(i).label.toString())) {
newkeyList.add(keyList.get(i));
}
}
// 数组长度
int count = newkeyList.size();
// 结果集
List<KeyModel> resultList = new ArrayList<KeyModel>();
// 用一个LinkedList作为中介
LinkedList<KeyModel> temp = new LinkedList<KeyModel>();
// 初始化temp
for (int i = 0; i < count; i++) {
temp.add(new KeyModel(48 + i, i + ""));
}
// 取数
Random rand = new Random();
for (int i = 0; i < count; i++) {
int num = rand.nextInt(count - i);
resultList.add(new KeyModel(temp.get(num).getCode(),
temp.get(num).getLable()));
temp.remove(num);
}
for (int i = 0; i < newkeyList.size(); i++) {
newkeyList.get(i).label = resultList.get(i).getLable();
newkeyList.get(i).codes[0] = resultList.get(i)
.getCode();
}
mKeyboardView.setKeyboard(mKeyboardNumber);
}
最近在调用使用的android系统的api,keyboardview和keyboard
项目地址:
相信自己,没有做不到的,只有想不到的
如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :644196190 微信公众号:终端研发部
支持所有的 View(AbsListView、RecyclerView、WebView....View) 和多层嵌套的视图结构
支持自定义并且已经集成了很多炫酷的 Header 和 Footer
支持和ListView的同步滚动 和 RecyclerView、AppBarLayout、CoordinatorLayout 的嵌套滚动 NestedScrolling.
支持在Android Studio Xml 编辑器中预览 效果
支持分别在 Default(默认)、Xml、JavaCode 三个中设置 Header 和 Footer
支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉)
支持通用的刷新监听器 OnRefreshListener 和更详细的滚动监听 OnMultiPurposeListener
支持自定义回弹动画的插值器,实现各种炫酷的动画效果.
支持设置主题来适配任何场景的App,不会出现炫酷但很尴尬的情况.
支持设置多种滑动方式来适配各种效果的Header和Footer:平移、拉伸、背后固定、顶层固定、全屏
支持内容尺寸自适应 Content-wrap_content
支持继承重写和扩展功能,内部实现没有 private 方法和字段,继承之后都可以重写覆盖
支持越界回弹(Listview、RecyclerView、ScrollView、WebView...View)
支持多点触摸,下拉、上拉各种手势冲突
自定义数字键盘
...我有两个问题?1.我使用“界面生成器在我的视图中添加一个文本字段并选择“数字键盘”作为用户输入数字的默认键盘,所以当我单击文本字段时,数字键盘会自动出现,我该如何阻止它出现数字键盘?因为我想显示我的数字... 查看详情
为我的自定义数字键盘设置动画
...常工作,不能动画为默认数字键盘,我该如何修改?我有一个UITextField调用“fNumber”和一个自定义数字键盘视图调用myNumberPadView并由界面生成器创建,当“fNumber”被聚焦时,我将 查看详情
iPad应用程序的自定义数字键盘
...10-2020:58:21【问题描述】:我正在为在iOS8上运行的iPad创建一个内部应用程序(不适用于应用商店),其中一个要求是一个自定义键盘,可以复制iPad解锁/PIN码输入数字键盘。我的自定义数字键盘基于这个项目:https://github.com/lnafzi... 查看详情
Kotlin 中的自定义数字键盘
...10:36:22【问题描述】:我需要使用Kotlin在AndroidStudio中创建一个自定义数字键盘。我成功地使用键盘按钮(从0到9和一个删除按钮)和显示结果的TextInputEditText实现了视图。我还在片段中实现了按钮:result=binding.editTextInsert//Dat 查看详情
在 iOS 中有一个自定义数字键盘来拨打号码
】在iOS中有一个自定义数字键盘来拨打号码【英文标题】:HaveacustomnumberpadiniOStodialnumber【发布时间】:2014-03-1306:45:21【问题描述】:我正在制作一个应用程序,用户通过该应用程序拨打号码。我想设计我自己的带有删除按钮的... 查看详情
iOS应用程序中的自定义数字键盘问题
...diniOSapp【发布时间】:2013-11-2920:17:26【问题描述】:我有一个带有自定义数字键盘的应用。我需要一些自定义数字键盘,但不是首选项视图上的所有文本字段。我已经编写了这个方法来为某些文本字段设置数字键盘:-(void)setNumbe... 查看详情
在自定义数字键盘上的按键上点击播放声音
...【发布时间】:2012-06-2022:01:26【问题描述】:我正在创建一个自定义数字栏并将其放在常规键盘的顶部。现在,当我点击数字键盘中的键时,我希望播放常规的键盘声音。我在按下按钮的委托中使用以下代码。打印日志语句,但... 查看详情
使用带有 TextField 的自定义表格视图单元格关闭数字键盘
...TextField【发布时间】:2015-11-0401:05:01【问题描述】:我有一个带有自定义单元格和文本字段的表格视图。如下图。自定义单元格的类:importUIKitprotocolTextFieldTableDelegatefuncretornaTexto( 查看详情
我需要一个定制的移动数字键盘[关闭]
】我需要一个定制的移动数字键盘[关闭]【英文标题】:IneedacustomizedNumerickeypadformobile[closed]【发布时间】:2015-03-2019:52:45【问题描述】:我正在开发一个混合应用程序,我希望我的应用程序可以打开一个在所有设备上看起来都相... 查看详情
自定义数字软键盘
需求:1.数字键盘2.输入删除,光标要随之移动3.删除键长按全部清除4.点击键盘背景有颜色变换效果效果图:布局<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_p 查看详情
自定义键盘附件视图输入
...put【发布时间】:2020-06-0721:34:39【问题描述】:我创建了一个自定义附件视图来补充标准ApplealphaiOS键盘。目的是添加一行数字键,以防止在键盘视图之间来回翻转。起初,我创建了一个工具栏并加载了一组0-9个标题为buttonItems的... 查看详情
键盘 Swift 上的自定义键
...的设置中在这两者之间进行切换。我想在两个键盘上添加一个键,允许用户在数字搜索和单词搜索之间切换,但我不知道怎么做。在iOS8中引入,您可以创建自定义键盘,但这不是用户 查看详情
从数字键盘上的自定义“完成”按钮接收通知在 iOS 8.3 中不起作用
...他线程likethisone中发布的解决方案在数字小键盘上添加了一个自定义“完成”按钮。随着iOS8.3的更新,一些事情发生了 查看详情
html5自定义数字键盘
原理:使用div模拟输入框,避免手机原生键盘弹出,键盘使用div模拟,点击事件使用js控制,光标闪烁使用css模拟,具体代码如下:1<!doctypehtml>2<htmllang="zh">3<head>4<metacharset="UTF-8">5<metahttp-equiv="X-UA-Compatible"conten... 查看详情
c#中定义了一个泛型,从键盘输入一个int型数字,如何接收转化为int型
Console.Write("您想要插入的元素是:");Tt=T.Parse(Console.ReadLine());//T是泛型类这句话肯定是错的,我知道。但是如何将得到的字符串转化为T类型????能转化吗??参考技术ATt=(T)Convert.ChangeType(Console.ReadLine(),typeof(T));本回答... 查看详情
gridview+popupwindow自定义数字键盘(代码片段)
publicclassSimpleGridViewTestextendsActivityEditTexteditText;privatePopupWindowpopupWindow;privateGridViewmGridView;privateViewcontentview;privateList<String>datas=newArrayList<String>(); 查看详情
android高级控件——自定义listview高仿一个qq可拖拽列表的实现
Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用ListView太久远了,导致对他已经有浓厚的感... 查看详情
自定义数字软键盘--封装版
布局:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:or 查看详情