当前位置: 首页 > news >正文

保定模板建站定制网站网站模板制作工具

保定模板建站定制网站,网站模板制作工具,用手机如何制作简历,wordpress themesAndroid 自定义输入支付密码的软键盘有项目需求需要做一个密码锁功能#xff0c;还有自己的软键盘#xff0c;类似与支付宝那种#xff0c;这里是整理的资料#xff0c;大家可以看下#xff0c;如有错误#xff0c;欢迎留言指正需求#xff1a;要实现类似支付宝的输入支…Android 自定义输入支付密码的软键盘有项目需求需要做一个密码锁功能还有自己的软键盘类似与支付宝那种这里是整理的资料大家可以看下如有错误欢迎留言指正需求要实现类似支付宝的输入支付密码的功能效果图如下软键盘效果图使用 android.inputmethodservice.KeyboardView这个类自定义软键盘软键盘的实现1. 自定义只输入数字的软键盘 PasswordKeyboardView 类继承自 android.inputmethodservice.KeyboardView/*** 输入数字密码的键盘布局控件。*/public class PasswordKeyboardView extends KeyboardView implementsandroid.inputmethodservice.KeyboardView.OnKeyboardActionListener {// 用于区分左下角空白的按键private static final int KEYCODE_EMPTY -10;private int mDeleteBackgroundColor;private Rect mDeleteDrawRect;private Drawable mDeleteDrawable;private IOnKeyboardListener mOnKeyboardListener;public PasswordKeyboardView(Context context, AttributeSet attrs) {super(context, attrs);init(context, attrs, 0);}public PasswordKeyboardView(Context context, AttributeSet attrs,int defStyleAttr) {super(context, attrs, defStyleAttr);init(context, attrs, defStyleAttr);}private void init(Context context, AttributeSet attrs,int defStyleAttr) {TypedArray a context.obtainStyledAttributes(attrs,R.styleable.PasswordKeyboardView, defStyleAttr, 0);mDeleteDrawable a.getDrawable(R.styleable.PasswordKeyboardView_pkvDeleteDrawable);mDeleteBackgroundColor a.getColor(R.styleable.PasswordKeyboardView_pkvDeleteBackgroundColor,Color.TRANSPARENT);a.recycle();// 设置软键盘按键的布局Keyboard keyboard new Keyboard(context,R.xml.keyboard_number_password);setKeyboard(keyboard);setEnabled(true);setPreviewEnabled(false);setOnKeyboardActionListener(this);}Overridepublic void onDraw(Canvas canvas) {super.onDraw(canvas);// 遍历所有的按键List keys getKeyboard().getKeys();for (Keyboard.Key key : keys) {// 如果是左下角空白的按键重画按键的背景if (key.codes[0] KEYCODE_EMPTY) {drawKeyBackground(key, canvas, mDeleteBackgroundColor);}// 如果是右下角的删除按键重画背景并且绘制删除的图标else if (key.codes[0] Keyboard.KEYCODE_DELETE) {drawKeyBackground(key, canvas, mDeleteBackgroundColor);drawDeleteButton(key, canvas);}}}// 绘制按键的背景private void drawKeyBackground(Keyboard.Key key, Canvas canvas,int color) {ColorDrawable drawable new ColorDrawable(color);drawable.setBounds(key.x, key.y,key.x key.width, key.y key.height);drawable.draw(canvas);}// 绘制删除按键private void drawDeleteButton(Keyboard.Key key, Canvas canvas) {if (mDeleteDrawable null)return;// 计算删除图标绘制的坐标if (mDeleteDrawRect null || mDeleteDrawRect.isEmpty()) {int intrinsicWidth mDeleteDrawable.getIntrinsicWidth();int intrinsicHeight mDeleteDrawable.getIntrinsicHeight();int drawWidth intrinsicWidth;int drawHeight intrinsicHeight;// 限制图标的大小防止图标超出按键if (drawWidth key.width) {drawWidth key.width;drawHeight drawWidth * intrinsicHeight / intrinsicWidth;}if (drawHeight key.height) {drawHeight key.height;drawWidth drawHeight * intrinsicWidth / intrinsicHeight;}// 获取删除图标绘制的坐标int left key.x (key.width - drawWidth) / 2;int top key.y (key.height - drawHeight) / 2;mDeleteDrawRect new Rect(left, top,left drawWidth, top drawHeight);}// 绘制删除的图标if (mDeleteDrawRect ! null !mDeleteDrawRect.isEmpty()) {mDeleteDrawable.setBounds(mDeleteDrawRect.left,mDeleteDrawRect.top, mDeleteDrawRect.right,mDeleteDrawRect.bottom);mDeleteDrawable.draw(canvas);}}Overridepublic void onKey(int primaryCode, int[] keyCodes) {// 处理按键的点击事件// 点击删除按键if (primaryCode Keyboard.KEYCODE_DELETE) {if (mOnKeyboardListener ! null) {mOnKeyboardListener.onDeleteKeyEvent();}}// 点击了非左下角按键的其他按键else if (primaryCode ! KEYCODE_EMPTY) {if (mOnKeyboardListener ! null) {mOnKeyboardListener.onInsertKeyEvent(Character.toString((char) primaryCode));}}}Overridepublic void onPress(int primaryCode) {}Overridepublic void onRelease(int primaryCode) {}Overridepublic void onText(CharSequence text) {}Overridepublic void swipeLeft() {}Overridepublic void swipeRight() {}Overridepublic void swipeDown() {}Overridepublic void swipeUp() {}/*** 设置键盘的监听事件。** param listener* 监听事件*/public void setIOnKeyboardListener(IOnKeyboardListener listener) {this.mOnKeyboardListener listener;}public interface IOnKeyboardListener {void onInsertKeyEvent(String text);void onDeleteKeyEvent();}}2. 自定义属性values/attrs.xml3. 软键盘按键的布局文件 res/xml/keyboard_number_password说明android:keyWidth33.33333%p指定按键的宽度保证键盘的每一列宽度一致android:keyHeight8%p设置键盘的高度android:horizontalGap1dp实现键盘每一列之间的分割线android:verticalGap1dp实现键盘每一行之间的分割线xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:keyWidth33.33333%pandroid:keyHeight8%pandroid:horizontalGap1dpandroid:verticalGap1dpandroid:codes49android:keyLabel1/android:codes50android:keyLabel2/android:codes51android:keyLabel3/android:codes52android:keyLabel4/android:codes53android:keyLabel5/android:codes54android:keyLabel6/android:codes55android:keyLabel7/android:codes56android:keyLabel8/android:codes57android:keyLabel9/android:codes-10android:keyLabel/android:codes48android:keyLabel0/android:codes-5android:keyIconmipmap/keyboard_backspace/3. 在布局中引用软键盘控件android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:background#b0b0b0android:focusabletrueandroid:focusableInTouchModetrueandroid:keyBackground#ffffffandroid:keyTextColor#000000android:shadowColor#00000000android:shadowRadius0app:pkvDeleteBackgroundColor#d2d2d2app:pkvDeleteDrawabledrawable/keyboard_backspace /随机数字键盘的实现目前能想到的有两种实现方式1. 在 onDraw 方法里重新绘制键盘上的文字覆盖掉原来的键盘这种实现方式相对比较麻烦。2. 调用 KeyboardView.setKeyboard() 方法重新设置键盘实现的代码如下// 0-9 的数字private final List keyCodes Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);/*** 随机打乱数字键盘上显示的数字顺序。*/public void shuffleKeyboard() {Keyboard keyboard getKeyboard();if (keyboard ! null keyboard.getKeys() ! null keyboard.getKeys().size() 0) {// 随机排序数字Collections.shuffle(keyCodes);// 遍历所有的按键List keys getKeyboard().getKeys();int index 0;for (Keyboard.Key key : keys) {// 如果按键是数字if (key.codes[0] ! KEYCODE_EMPTY key.codes[0] ! Keyboard.KEYCODE_DELETE) {char code keyCodes.get(index);key.codes[0] code;key.label Character.toString(code);}}// 更新键盘setKeyboard(keyboard);}}调用 shuffleKeyboard 即可生成随机的键盘。最终实现的效果如下随机键盘踩坑1. 点击按键的放大镜效果提示软键盘默认点击按键时会显示放大镜效果的提示如果不需要可以使用 setPreviewEnabled(false) 设置不显示提示。可以在布局中使用 android:keyPreviewLayout 指定提示文字的布局。2. 按键文字不清晰软键盘按键默认带有阴影效果会导致文字不清楚可以使用下面方式去掉阴影android:shadowColorcolor/transparentandroid:shadowRadius0.../感谢阅读希望能帮助到大家谢谢大家对本站的支持
http://www.yutouwan.com/news/85856/

相关文章:

  • 国内设计网站公司个人做网站被骗
  • 网站搭建实训报告华为云做网站
  • 网站开发流程人物wordpress表单的增加与查询
  • 常青花园做网站的公司煤棚网架公司
  • 建设手机移动网站网站优化关键词
  • mui做网站杭州g20网站建设公司
  • 赤城seo网站优化排名新冠人数最新统计
  • 装修公司网站建设费用手工制作灯笼简单又漂亮
  • 做图表的网站 免费专业的官网设计公司
  • 网站定制建网站定制建设设驾校报名网站怎么做
  • 股票跟单网站开发章贡区建设局网站
  • 新闻单位建设网站的意义网站开发工程师分析
  • 什么软件能看网站?wordpress百度云链接
  • 武穴市住房和城乡建设局网站企业为什么选择上市
  • 南通手机建站模板中华商标交易网官方网站
  • 网站怎么添加滤镜功能吗做购物网站用什么应用
  • p2p网站开发思路方案站内seo和站外seo区别
  • 网站建设论团百度关键词优化方法
  • 网站建设实训心得与建议WordPress导航菜单不显示
  • asp.net网站开发简介淮安网站建设淮安网站制作
  • 社区门户网站模板商梦建站
  • 网站一年的维护费用专业轻电商网站建设公司
  • 如何搭建个人网站python基础教程 pdf
  • 欧美平面设计网站网站建设套定额
  • 免费做元宵节卡片的网站中国企业网银
  • 通辽网站网站建设营销版网站
  • 文案素材网站wordpress怎么改标题
  • 网站价值排行邵武网站建设wzjseo
  • 网站做优化需要哪些后台信息整个网站开发框架流程
  • 进口网站建设哪里可以申请免费域名