字节面试难不难,Android 总结,八年Android开发心路历程

我们自定义的每一个按键都将会有一个 codes 值,比如回退我们就写成:

<Key android:codes=“-5”

android:keyIcon=“@drawable/sym_keyboard_delete”/>

再监听就是:

if (primaryCode == Keyboard.KEYCODE_DELETE){}

这就表示,监听 delete 事件了!

定义 <Key/> 标签时常用到的 codes / KEYCODE 有:

public static final int KEYCODE_SHIFT = -1;

public static final int KEYCODE_MODE_CHANGE = -2;

public static final int KEYCODE_CANCEL = -3;

public static final int KEYCODE_DONE = -4;

public static final int KEYCODE_DELETE = -5;

public static final int KEYCODE_ALT = -6;

2. KeyboardView

处理绘制,检测按键,触摸动作:

  • A view that renders a virtual Keyboard. It handles rendering of keys and detecting key presses and touch movements.

我们会在Activity的xml文件中这样定义:

<android.inputmethodservice.KeyboardView

android:id=“@+id/keyboard_view”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_alignParentBottom=“true”

android:background=“@color/gray”

android:focusable=“true”

android:focusableInTouchMode=“true”

android:keyBackground=“@drawable/bg_keyboard_selector”

android:keyTextColor=“@color/keyTextColor”

android:visibility=“gone”

android:keyPreviewLayout=“@layout/key_preview_layout”

/>

  • 其中 android:keyPreviewLayout 指的是每当我们点击键盘上的某个键时,短暂弹出的布局。

| 属性名 | 描述 |

| — | — |

| android:keyBackground | Image for the key. |

| android:keyPreviewLayout | Layout resource for key press feedback. |

| android:keyPreviewOffset | Vertical offset of the key press feedback from the key. |

| android:keyTextColor | Color to use for the label in a key. |

| android:keyTextSize | Size of the text for character keys. |

| android:labelTextSize | Size of the text for custom keys with some text and no icon. |

| android:popupLayout | Layout resource for popup keyboards. |

| android:verticalCorrection | Amount to offset the touch Y coordinate by, for bias correction. |

  • 我们需要建一个xml文件,来布局我们的视图,

一般是在res文件夹中建一个名为xml的文件夹,在里面新建立一个xml布局文件。

  • 每一个按键的属性主要包括

android:codes=" " 和 android:keyLabel=""

Activity 就是根据 codes 的值来监听的。

一些可以自定义设置,一些需要是 keyboard 中设置好的,要保持一致。

二、实例解析:在xml文件中定义


1. 效果图:

在xml文件中定义的自定义键盘效果图

建一个类,用于处理软键盘事件,文件名为 KeyboardUtil.java

2. 定义键盘的键

键盘上键的细节和它的位置我们指定在一个xml文件中,每一个键都有如下的属性,

  • keyLabel 这个属性是指每个键显示的文本

  • codes 这个属性是指这个键代表的字符的unicode

例如,我们定义了一个字母A,

codes 属性的值是97keyLabel属性的值就是A

如果一个code对应多个key,这个key代表的字符取决于这个key接受到的点击数taps,例如,一个键具有63,33,58编码:

  • 一次点击就是 ?

  • 两次点击就是 !

  • 三次点击就是 :

一个 key 还可以有一些可选的属性:

  • keyEdgeFlags 这个属性的值可以是left或者right

这个属性通常加在一行中最左边和最右边的键上。

  • keyWidth 这个属性定义了键的宽度,通常是一个百分比的值。

  • isRepeatable 这个属性如果设置为true,那么当长按该键时就会

重复接受到该键上的动作,在 删除键键空格键 上通常设为true

键盘上的键都是按行分组,通常情况下我们每行上的键限制到10个以内

英文键盘建议每个键占整个键盘宽度的10%,我们将键的高度设置为60dp,这个值可以调整,但是不建议设置低于48dp .

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

写在最后

在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。

如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!

加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

ps://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值