如何制作Android自定义键盘()

与天地兮比寿,与日月兮齐光。这篇文章主要讲述如何制作Android自定义键盘?相关的知识,希望能为你提供帮助。
我想制作一个自定义键盘。我不知道如何在xml和activity中做到这一点。这张照片是我的键盘型号。它只需要数字。

答案首先,您将需要一个keyboard.xml文件,该文件将放在res/xml文件夹中(如果该文件夹不存在,则创建它)。

< ?xml version="1.0" encoding="utf-8"?> < Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="15%p" android:keyHeight="15%p" > < Row> < Key android:codes="1"android:keyLabel="1" android:horizontalGap="4%p"/> < Key android:codes="2"android:keyLabel="2" android:horizontalGap="4%p"/> < Key android:codes="3"android:keyLabel="3" android:horizontalGap="4%p" /> < Key android:codes="4"android:keyLabel="4" android:horizontalGap="4%p" /> < Key android:codes="5"android:keyLabel="5" android:horizontalGap="4%p" /> < /Row> < Row> < Key android:codes="6"android:keyLabel="6" android:horizontalGap="4%p"/> < Key android:codes="7"android:keyLabel="7" android:horizontalGap="4%p"/> < Key android:codes="8"android:keyLabel="8" android:horizontalGap="4%p" /> < Key android:codes="9"android:keyLabel="9" android:horizontalGap="4%p" /> < Key android:codes="0"android:keyLabel="0" android:horizontalGap="4%p" /> < /Row> < Row> < Key android:codes="-1"android:keyIcon="@drawable/backspace" android:keyWidth="34%p" android:horizontalGap="4%p"/> < Key android:codes="100"android:keyLabel="Enter" android:keyWidth="53%p" android:horizontalGap="4%p"/> < /Row> < /Keyboard>

**请注意,您必须创建backspace drawable并将其放在res / drawable-ldpi文件夹中,其尺寸非常小(如18x18像素)
然后在您希望它使用的xml文件中(TextView所在的位置),您应该添加以下代码:
< RelativeLayout ... > .....< android.inputmethodservice.KeyboardView android:id="@+id/keyboardview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:focusable="true" android:focusableInTouchMode="true" android:visibility="gone" /> ......< /RelativeLayout>

**请注意,您将放置android.inputmethodservice.KeyboardView的xml文件必须是RelativeLayout才能设置alignParentBottom="true"(通常键盘显示在屏幕底部)
然后你需要在onCreateActivity函数中添加以下代码,该函数处理你想要将键盘连接到的TextView
// Create the Keyboard mKeyboard= new Keyboard(this,R.xml.keyboard); // Lookup the KeyboardView mKeyboardView= (KeyboardView)findViewById(R.id.keyboardview); // Attach the keyboard to the view mKeyboardView.setKeyboard( mKeyboard ); // Do not show the preview balloons //mKeyboardView.setPreviewEnabled(false); // Install the key handler mKeyboardView.setOnKeyboardActionListener(mOnKeyboardActionListener);

**请注意,mKeyboardmKeyboardView是您必须创建的私有类变量。
然后你需要以下函数来打开键盘(你必须通过onClick xml属性将它与TextView相关联)
public void openKeyboard(View v) { mKeyboardView.setVisibility(View.VISIBLE); mKeyboardView.setEnabled(true); if( v!=null)((InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0); }

最后你需要能够处理你事件的OnKeyboardActionListener
private OnKeyboardActionListener mOnKeyboardActionListener = new OnKeyboardActionListener() { @Override public void onKey(int primaryCode, int[] keyCodes) { //Here check the primaryCode to see which key is pressed //based on the android:codes property if(primaryCode==1) { Log.i("Key","You just pressed 1 button"); } }@Override public void onPress(int arg0) { }@Override public void onRelease(int primaryCode) { }@Override public void onText(CharSequence text) { }@Override public void swipeDown() { }@Override public void swipeLeft() { }@Override public void swipeRight() { }@Override public void swipeUp() { } };

希望有所帮助!
【如何制作Android自定义键盘()】大部分代码都找到了here
另一答案 System keyboard这个答案告诉我们如何制作一个可以在用户手机上安装的任何应用程序中使用的自定义系统键盘。如果你想制作一个只能在你自己的应用程序中使用的键盘,那么see my other answer。
以下示例如下所示。您可以为任何键盘布局修改它。
如何制作Android自定义键盘()

文章图片

以下步骤说明如何创建可用的自定义系统键盘。我尽可能地尝试删除任何不必要的代码。如果您还需要其他功能,我最后会提供更多帮助的链接。
1. Start a new Android project我将我的项目命名为“自定义键盘”。随便打电话给你。这里没有什么特别的。我将离开MainActivity和“Hello World!”布局原样。
2. Add the layout files将以下两个文件添加到应用程序的res/layout文件夹中:
  • keyboard_view.xml
  • key_preview.xml
keyboard_view.xml
这个视图就像一个容纳我们键盘的容器。在这个例子中只有一个键盘,但你可以添加其他键盘并将它们交换进这个KeyboardView
< ?xml version="1.0" encoding="utf-8"?> < android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:keyPreviewLayout="@layout/key_preview" android:layout_alignParentBottom="true"> < /android.inputmethodservice.KeyboardView>

key_preview.xml
键预览是按键盘键时弹出的布局。它只显示你正在按下的键(如果你的大指,胖指覆盖它)。这不是一个多选弹出窗口。为此你应该看看Candidates view。
< ?xml version="1.0" encoding="utf-8"?> < TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@android:color/white" android:textColor="@android:color/black" android:textSize="30sp"> < /TextView>

3. Add supporting xml files在xml文件夹中创建一个res文件夹。 (右键单击res并选择New> Directory。)
然后将以下两个xml文件添加到其中。 (右键单击xml文件夹,然后选择“新建”> “XML资源文件”。)
  • number_pad.xml
  • method.xml
number_pad.xml
这是它开始变得更有趣的地方。这个Keyboard定义了keys的布局。
< ?xml version="1.0" encoding="utf-8"?> < Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="20%p" android:horizontalGap="5dp" android:verticalGap="5dp" android:keyHeight="60dp"> < Row> < Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/> < Key android:codes="50" android:keyLabel="2"/> < Key android:codes="51" android:keyLabel="3"/> < Key android:codes="52" android:keyLabel="4"/> < Key android:codes="53" android:keyLabel="5" android:keyEdgeFlags="right"/> < /Row> < Row> < Key android:codes="54" android:keyLabel="6" android

    推荐阅读