点击上方“Android技术杂货铺”,选择“标星”
干货文章,第一时间送达!
开篇
本次给大家分享的是支持拖动、缩放的自定义原生软键盘。不同于市面上的自定义软件,此键盘完全是原生实现。为什么要写这款自定义键盘,是因为在项目开发过程中,发现在弹窗输入框中调用系统输入法的时候,输入框会别严重挤上去,特别处于横屏界面时,键盘所占有的空间很大,留给用户的操作空间太小,压缩了用户的体验性。当前还没有发布到jCenter
中心,如果有类似需求,请到GitHub下载该库至项目中,按需求做相应调整。
传送门:https://github.com/JustinRoom/KeyboardDemo
效果图
使用方法
使用要点:
a、创建KeyBoardView实例(支持xml布局文件):
KeyBoardView keyboardView = new KeyBoardView(context);
b、管理所有需要使用该自定义键盘的
EditText
:
//如果view是ViewGroup,自动查找该ViewGroup树下的所有EditText并加入管理
public void addAllInputView(View view)//添加某一特定的EditTextpublic void addInputView(@NonNull EditText editText)public void removeAllInputView(View view)public void removeInputView(@NonNull EditText editText)
c、把
KeyBoardView
添加到Activity
、Fragment
、DialogFragment
所在的Window
中:KeyUtils
工具已提供了一个快速添加的方法。
KeyUtils.init(getActivity().getWindow(), keyboardView);
1、Activity、Fragment。这里以Fragment为例:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_keyboard, container, false);
keyboardView = new KeyBoardView(root.getContext());
keyboardView.addAllInputView(root);
KeyUtils.init(getActivity().getWindow(), keyboardView);
root.findViewById(R.id.btn_toggle).setOnClickListener(this);
root.findViewById(R.id.btn_dialog).setOnClickListener(this);
return root;
}
@Override
public void onResume() {
super.onResume();
keyboardView.onResume();
}
@Override
public void onPause() {
Log.i("KeyboardFragment", "onPause: ");
keyboardView.onPause();
super.onPause();
}
@Override
public void onDestroy() {
keyboardView.onDestroy();
super.onDestroy();
}
其他实现细节请看源码:https://github.com/JustinRoom/KeyboardDemo
作者:SwitchLife
链接:https://www.jianshu.com/p/8f3382a63f8b
本文来自SwitchLife
投稿
---end---
推荐阅读:
高仿探探首页波纹扫描效果
开源一个 Android 图片压缩框架
Java8 中的Lambda 表达式详解
2019 随手点好看 年薪上百万!