Android,Android 仿微信自定义数字键盘的实现代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android,Android 仿微信自定义数字键盘的实现代码

本文介绍了Android 仿微信自定义数字键盘的实现代码,分享给大家,希望对大家有帮助

最终效果:

实现这个自定义键盘的思路很简单:

1. 要写出一个数字键盘的布局;

2. 与 Edittext 结合使用,对每个按键的点击事件进行处理;

3. 禁用系统软键盘。

有了思路,实现起来就不难了。

1. 实现键盘的 xml 布局

网格样式的布局用 GridView 或者 RecyclerView 都可以实现,其实用 GridView 更方便一些,不过我为了多熟悉 RecyclerView 的用法,这里选择用了 RecyclerView 。

[Java] 查看源文件 复制代码

?

1 <

RecyclerView 用来实现键盘布局,上面的 RelativeLayout 则是为了实现收起键盘的点击事件。

2. 在代码中实现键盘布局,填充数据、增加点击事件

我们新建类 KeyboardView 继承自 RelativeLayout ,关联上面的布局文件,然后做一些初始化操作:对 RecyclerView 填充数据、设置适配器,设置出现和消失的动画效果,写一些会用到的方法等。

[Java] 查看源文件 复制代码

?

001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 public class KeyboardView extends RelativeLayout {

private RelativeLayout rlBack;

private RecyclerView recyclerView;

private List<String> datas;

private KeyboardAdapter adapter;

private Animation animationIn;

private Animation animationOut;

public KeyboardView(Context context) {

this(context, null);

}

public KeyboardView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public KeyboardView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init(context, attrs, defStyleAttr);

}

024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 private void init(Context context, AttributeSet attrs, int defStyleAttr) { LayoutInflater.from(context).inflate(yout_key_board, this);

rlBack = findViewById(R.id.rl_back);

rlBack.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View view) { // 点击关闭键盘

dismiss();

}

});

recyclerView = findViewById(R.id.recycler_view);

initData();

initView();

initAnimation();

}

// 填充数据

private void initData() {

datas = new ArrayList<>();

for (int i = 0; i < 12; i++) {

if (i < 9) {

datas.add(String.valueOf(i + 1));

} else if (i == 9) {

datas.add(".");

} else if (i == 10) {

datas.add("0");

} else {

datas.add("");

}

}

}

// 设置适配器

private void initView() {

recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3));

adapter = new KeyboardAdapter(getContext(), datas);

recyclerView.setAdapter(adapter);

}

// 初始化动画效果

private void initAnimation() {

animationIn = AnimationUtils.loadAnimation(getContext(), R.anim.keyboard_in);

animationOut = AnimationUtils.loadAnimation(getContext(), R.anim.keyboard_out); }

// 弹出软键盘

public void show() {

startAnimation(animationIn);

setVisibility(VISIBLE);

}

// 关闭软键盘

public void dismiss() {

if (isVisible()) {

startAnimation(animationOut);

setVisibility(GONE);

}

}

// 判断软键盘的状态

public boolean isVisible() {

if (getVisibility() == VISIBLE) {

return true;

}

return false;

}

相关文档
最新文档