Bagaimana Anda bisa membuat keyboard khusus di Android?
105
Saya ingin membuat keyboard khusus. Saya tidak tahu bagaimana melakukannya menggunakan XML dan Java. Gambar berikut adalah model keyboard yang ingin saya buat. Itu hanya membutuhkan angka.
** Perhatikan bahwa Anda harus membuat backspacedrawable dan menempatkannya di folder res / drawable-ldpi dengan ukuran yang sangat kecil (seperti 18x18 piksel)
Kemudian di file xml yang Anda inginkan untuk digunakan (di mana TextView Anda berada), Anda harus menambahkan kode berikut:
** Perhatikan bahwa file xml yang akan Anda tempatkan android.inputmethodservice.KeyboardView, RelativeLayoutharus bisa mengatur alignParentBottom="true"(Biasanya keyboard disajikan di bagian bawah layar)
Kemudian Anda perlu menambahkan kode berikut dalam onCreatefungsi Activityyang menangani TextViewAnda ingin memasang keyboard
// Create the Keyboard
mKeyboard=newKeyboard(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);
** Perhatikan bahwa mKeyboarddan mKeyboardViewmerupakan variabel kelas privat yang harus Anda buat.
Kemudian Anda memerlukan fungsi berikut untuk membuka keyboard (Anda harus mengaitkannya dengan TextView melalui onClickproperti xml)
Dan akhirnya Anda membutuhkan OnKeyboardActionListeneryang akan menangani acara Anda
privateOnKeyboardActionListener mOnKeyboardActionListener =newOnKeyboardActionListener(){@Overridepublicvoid onKey(int primaryCode,int[] keyCodes){//Here check the primaryCode to see which key is pressed //based on the android:codes propertyif(primaryCode==1){Log.i("Key","You just pressed 1 button");}}@Overridepublicvoid onPress(int arg0){}@Overridepublicvoid onRelease(int primaryCode){}@Overridepublicvoid onText(CharSequence text){}@Overridepublicvoid swipeDown(){}@Overridepublicvoid swipeLeft(){}@Overridepublicvoid swipeRight(){}@Overridepublicvoid swipeUp(){}};
Bagaimana jika saya tidak ingin keyboard berada di bagian bawah layar? (mis. saya ingin pengguna dapat menyeretnya). Apakah itu sesuatu yang dapat saya kendalikan melalui aplikasi papan ketik saya atau apakah itu ditangani oleh sistem android?
pengguna3294126
lebar keyboard tidak memenuhi layar apa yang harus saya lakukan untuk membuatnya memenuhi semua layar
George Thomas
apa tata letak induk tempat KeyboardView berada? Juga sudahkah Anda memeriksa layout_width dari KeyboardView ??
Pontios
1
Perlu diketahui bahwa kelas KeyboardView dan Keyboard tidak digunakan lagi oleh Google sejak API level 29. Jadi, solusi ini tidak akan berfungsi lagi di masa mendatang jika Anda harus menargetkan level API yang lebih baru.
maex
keyboardView dihentikan oleh google. apa solusi baru?
tohidmahmoudvand
78
Keyboard sistem
Jawaban ini menjelaskan cara membuat keyboard sistem kustom yang dapat digunakan di aplikasi apa pun yang telah diinstal pengguna di ponsel mereka. Jika Anda ingin membuat keyboard yang hanya akan digunakan dalam aplikasi Anda sendiri, lihat jawaban saya yang lain .
Contoh di bawah ini akan terlihat seperti ini. Anda dapat memodifikasinya untuk tata letak keyboard apa pun.
Langkah-langkah berikut menunjukkan cara membuat keyboard sistem kustom yang berfungsi. Sebisa mungkin saya mencoba menghapus kode yang tidak perlu. Jika ada fitur lain yang Anda butuhkan, saya memberikan tautan ke bantuan lebih lanjut di bagian akhir.
1. Mulai proyek Android baru
Saya menamai proyek saya "Keyboard Khusus". Sebut saja sesuka Anda. Tidak ada hal lain yang istimewa di sini. Saya hanya akan meninggalkan MainActivitydan "Hello World!" tata letak apa adanya.
2. Tambahkan file tata letak
Tambahkan dua file berikut ke res/layoutfolder aplikasi Anda :
keyboard_view.xml
key_preview.xml
keyboard_view.xml
Tampilan ini seperti wadah yang akan menahan keyboard kita. Dalam contoh ini hanya ada satu keyboard, tetapi Anda dapat menambahkan keyboard lain dan menukarnya masuk dan keluar dari ini KeyboardView.
Pratinjau tombol adalah tata letak yang muncul saat Anda menekan tombol keyboard. Itu hanya menunjukkan tombol apa yang Anda tekan (jika jari-jari besar dan gemuk Anda menutupinya). Ini bukan popup pilihan ganda. Untuk itu Anda harus melihat tampilan Kandidat .
keyWidth: Ini adalah lebar default setiap kunci. The 20%pberarti bahwa setiap tombol harus mengambil 20% dari lebar p Arent. Ini dapat diganti dengan kunci individu, seperti yang Anda lihat terjadi dengan tombol Delete dan Enter di baris ketiga.
keyHeight: Ini sulit dikodekan di sini, tetapi Anda dapat menggunakan sesuatu seperti @dimen/key_heightuntuk menyetelnya secara dinamis untuk ukuran layar yang berbeda.
Gap: Celah horizontal dan vertikal menunjukkan berapa banyak ruang yang tersisa di antara tombol. Bahkan jika Anda mengaturnya, 0pxmasih ada celah kecil.
codes: Ini bisa berupa Unicode atau nilai kode khusus yang menentukan apa yang terjadi atau apa yang dimasukkan saat tombol ditekan. Lihat keyOutputTextapakah Anda ingin memasukkan string Unicode yang lebih panjang.
keyLabel: Ini adalah teks yang ditampilkan di tombol.
keyEdgeFlags: Ini menunjukkan tepi mana kunci harus sejajar.
isRepeatable: Jika Anda menahan tombol itu akan terus mengulangi masukan.
method.xml
File ini memberi tahu sistem subtipe metode masukan yang tersedia. Saya hanya memasukkan versi minimal di sini.
4. Tambahkan kode Java untuk menangani input tombol
Buat file Java baru. Sebut saja MyInputMethodService. File ini menyatukan semuanya. Ini menangani masukan yang diterima dari keyboard dan mengirimkannya ke tampilan apa pun yang menerimanya (sebuah EditText, misalnya).
publicclassMyInputMethodServiceextendsInputMethodServiceimplementsKeyboardView.OnKeyboardActionListener{@OverridepublicView onCreateInputView(){// get the KeyboardView and add our Keyboard layout to itKeyboardView keyboardView =(KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view,null);Keyboard keyboard =newKeyboard(this, R.xml.number_pad);
keyboardView.setKeyboard(keyboard);
keyboardView.setOnKeyboardActionListener(this);return keyboardView;}@Overridepublicvoid onKey(int primaryCode,int[] keyCodes){InputConnection ic = getCurrentInputConnection();if(ic ==null)return;switch(primaryCode){caseKeyboard.KEYCODE_DELETE:CharSequence selectedText = ic.getSelectedText(0);if(TextUtils.isEmpty(selectedText)){// no selection, so delete previous character
ic.deleteSurroundingText(1,0);}else{// delete the selection
ic.commitText("",1);}break;default:char code =(char) primaryCode;
ic.commitText(String.valueOf(code),1);}}@Overridepublicvoid onPress(int primaryCode){}@Overridepublicvoid onRelease(int primaryCode){}@Overridepublicvoid onText(CharSequence text){}@Overridepublicvoid swipeLeft(){}@Overridepublicvoid swipeRight(){}@Overridepublicvoid swipeDown(){}@Overridepublicvoid swipeUp(){}}
Catatan:
The OnKeyboardActionListenermendengarkan untuk input keyboard. Itu juga membutuhkan semua metode kosong dalam contoh ini.
Inilah InputConnectionyang digunakan untuk mengirim input ke tampilan lain seperti EditText.
5. Perbarui manifes
Saya meletakkan ini yang terakhir daripada yang pertama karena ini mengacu pada file yang sudah kami tambahkan di atas. Untuk mendaftarkan keyboard kustom Anda sebagai keyboard sistem, Anda perlu menambahkan servicebagian ke file AndroidManifest.xml Anda . Letakkan di applicationbagian setelah activity.
Itu dia! Anda seharusnya dapat menjalankan aplikasi Anda sekarang. Namun, Anda tidak akan melihat banyak sampai Anda mengaktifkan keyboard Anda di pengaturan.
6. Aktifkan keyboard di Pengaturan
Setiap pengguna yang ingin menggunakan keyboard Anda harus mengaktifkannya di pengaturan Android. Untuk petunjuk mendetail tentang cara melakukannya, lihat tautan berikut:
Buka Pengaturan Android> Bahasa dan masukan> Keyboard saat ini> Pilih keyboard.
Anda harus melihat Keyboard Kustom Anda di daftar. Aktifkan.
Kembali dan pilih Keyboard saat ini lagi. Anda harus melihat Keyboard Kustom Anda di daftar. Pilih itu.
Sekarang Anda harus dapat menggunakan keyboard Anda di mana pun Anda dapat mengetik di Android.
Pelajaran lanjutan
Keyboard di atas dapat digunakan, tetapi untuk membuat keyboard yang ingin digunakan orang lain, Anda mungkin harus menambahkan lebih banyak fungsionalitas. Pelajari tautan di bawah untuk mempelajari caranya.
Tidak suka KeyboardViewtampilan dan perilaku standar ? Saya pasti tidak. Sepertinya belum diperbarui sejak Android 2.0. Bagaimana dengan semua keyboard khusus di Play Store? Mereka tidak terlihat seperti keyboard jelek di atas.
Kabar baiknya adalah Anda dapat sepenuhnya menyesuaikan tampilan dan perilaku papan ketik Anda sendiri. Anda perlu melakukan hal-hal berikut:
Buat tampilan keyboard kustom Anda sendiri yang merupakan subclass ViewGroup. Anda dapat mengisinya dengan Buttons atau bahkan membuat tampilan kunci kustom Anda sendiri untuk subkelas tersebut View. Jika Anda menggunakan tampilan popup, catat ini .
Tambahkan antarmuka pendengar acara khusus di keyboard Anda. Sebut metodenya untuk hal-hal seperti onKeyClicked(String text)atau onBackspace().
Anda tidak perlu menambahkan keyboard_view.xml, key_preview.xmlatau number_pad.xmldijelaskan dalam arah atas, karena ini semua untuk standar KeyboardView. Anda akan menangani semua aspek UI ini dalam tampilan kustom Anda.
Di MyInputMethodServicekelas Anda , terapkan pendengar keyboard khusus yang Anda tentukan di kelas keyboard Anda. Ini menggantikan KeyboardView.OnKeyboardActionListener, yang tidak lagi dibutuhkan.
Dalam metode MyInputMethodServicekelas Anda onCreateInputView(), buat dan kembalikan instance dari keyboard kustom Anda. Jangan lupa untuk menyetel pendengar khusus keyboard ke this.
Jawaban ini menjelaskan cara membuat keyboard kustom untuk digunakan secara eksklusif dalam aplikasi Anda. Jika Anda ingin membuat keyboard sistem yang dapat digunakan di aplikasi apa pun, lihat jawaban saya yang lain .
Contohnya akan terlihat seperti ini. Anda dapat memodifikasinya untuk tata letak keyboard apa pun.
Tambahkan file tata letak ke res/layoutfolder. Aku menelepon milikku keyboard. Keyboard akan menjadi tampilan gabungan khusus yang akan kami perbesar dari file tata letak xml ini. Anda dapat menggunakan tata letak apa pun yang Anda suka untuk mengatur kunci, tetapi saya menggunakan file LinearLayout. Catat mergetagnya.
Untuk tujuan demonstrasi, aktivitas kami memiliki satu EditTextdan keyboard ada di bagian bawah. Saya menyebut tampilan keyboard kustom saya MyKeyboard. (Kami akan segera menambahkan kode ini, jadi abaikan kesalahannya untuk saat ini.) Manfaat meletakkan semua kode keyboard kami ke dalam satu tampilan adalah membuatnya mudah untuk digunakan kembali di aktivitas atau aplikasi lain.
Tambahkan file Java baru. Aku menelepon milikku MyKeyboard.
Hal terpenting untuk diperhatikan di sini adalah bahwa tidak ada tautan keras ke salah satu EditTextatau Activity. Ini membuatnya mudah untuk dicolokkan ke aplikasi atau aktivitas apa pun yang membutuhkannya. Tampilan papan ketik khusus ini juga menggunakan InputConnection, yang meniru cara papan ketik sistem berkomunikasi dengan EditText. Inilah cara kami menghindari tautan keras.
MyKeyboard adalah tampilan gabungan yang memperbesar tata letak tampilan yang kami tentukan di atas.
MyKeyboard.java
publicclassMyKeyboardextendsLinearLayoutimplementsView.OnClickListener{// constructorspublicMyKeyboard(Context context){this(context,null,0);}publicMyKeyboard(Context context,AttributeSet attrs){this(context, attrs,0);}publicMyKeyboard(Context context,AttributeSet attrs,int defStyleAttr){super(context, attrs, defStyleAttr);
init(context, attrs);}// keyboard keys (buttons)privateButton mButton1;privateButton mButton2;privateButton mButton3;privateButton mButton4;privateButton mButton5;privateButton mButton6;privateButton mButton7;privateButton mButton8;privateButton mButton9;privateButton mButton0;privateButton mButtonDelete;privateButton mButtonEnter;// This will map the button resource id to the String value that we want to // input when that button is clicked.SparseArray<String> keyValues =newSparseArray<>();// Our communication link to the EditTextInputConnection inputConnection;privatevoid init(Context context,AttributeSet attrs){// initialize buttonsLayoutInflater.from(context).inflate(R.layout.keyboard,this,true);
mButton1 =(Button) findViewById(R.id.button_1);
mButton2 =(Button) findViewById(R.id.button_2);
mButton3 =(Button) findViewById(R.id.button_3);
mButton4 =(Button) findViewById(R.id.button_4);
mButton5 =(Button) findViewById(R.id.button_5);
mButton6 =(Button) findViewById(R.id.button_6);
mButton7 =(Button) findViewById(R.id.button_7);
mButton8 =(Button) findViewById(R.id.button_8);
mButton9 =(Button) findViewById(R.id.button_9);
mButton0 =(Button) findViewById(R.id.button_0);
mButtonDelete =(Button) findViewById(R.id.button_delete);
mButtonEnter =(Button) findViewById(R.id.button_enter);// set button click listeners
mButton1.setOnClickListener(this);
mButton2.setOnClickListener(this);
mButton3.setOnClickListener(this);
mButton4.setOnClickListener(this);
mButton5.setOnClickListener(this);
mButton6.setOnClickListener(this);
mButton7.setOnClickListener(this);
mButton8.setOnClickListener(this);
mButton9.setOnClickListener(this);
mButton0.setOnClickListener(this);
mButtonDelete.setOnClickListener(this);
mButtonEnter.setOnClickListener(this);// map buttons IDs to input strings
keyValues.put(R.id.button_1,"1");
keyValues.put(R.id.button_2,"2");
keyValues.put(R.id.button_3,"3");
keyValues.put(R.id.button_4,"4");
keyValues.put(R.id.button_5,"5");
keyValues.put(R.id.button_6,"6");
keyValues.put(R.id.button_7,"7");
keyValues.put(R.id.button_8,"8");
keyValues.put(R.id.button_9,"9");
keyValues.put(R.id.button_0,"0");
keyValues.put(R.id.button_enter,"\n");}@Overridepublicvoid onClick(View v){// do nothing if the InputConnection has not been set yetif(inputConnection ==null)return;// Delete text or input key value// All communication goes through the InputConnectionif(v.getId()== R.id.button_delete){CharSequence selectedText = inputConnection.getSelectedText(0);if(TextUtils.isEmpty(selectedText)){// no selection, so delete previous character
inputConnection.deleteSurroundingText(1,0);}else{// delete the selection
inputConnection.commitText("",1);}}else{Stringvalue= keyValues.get(v.getId());
inputConnection.commitText(value,1);}}// The activity (or some parent or controller) must give us // a reference to the current EditText's InputConnectionpublicvoid setInputConnection(InputConnection ic){this.inputConnection = ic;}}
4. Arahkan keyboard ke EditText
Untuk keyboard sistem, Android menggunakan InputMethodManager untuk mengarahkan keyboard ke fokus EditText. Dalam contoh ini, aktivitas akan berlangsung dengan menyediakan link dari EditTextke keyboard kustom kita ke.
Karena kami tidak menggunakan keyboard sistem, kami perlu menonaktifkannya agar tidak muncul saat kami menyentuh EditText. Kedua, kita perlu mendapatkan InputConnectiondari EditTextdan memberikannya ke keyboard kita.
MainActivity.java
publicclassMainActivityextendsAppCompatActivity{@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);EditText editText =(EditText) findViewById(R.id.editText);MyKeyboard keyboard =(MyKeyboard) findViewById(R.id.keyboard);// prevent system keyboard from appearing when EditText is tapped
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
editText.setTextIsSelectable(true);// pass the InputConnection from the EditText to the keyboardInputConnection ic = editText.onCreateInputConnection(newEditorInfo());
keyboard.setInputConnection(ic);}}
Jika Aktivitas Anda memiliki beberapa EditText, maka Anda perlu menulis kode untuk meneruskan EditText yang benar InputConnectionke keyboard. (Anda dapat melakukan ini dengan menambahkan OnFocusChangeListenerdan OnClickListenerke EditTexts. Lihat artikel ini untuk pembahasannya.) Anda mungkin juga ingin menyembunyikan atau menampilkan keyboard Anda pada waktu yang tepat.
Jadi
Itu dia. Anda seharusnya dapat menjalankan aplikasi contoh sekarang dan memasukkan atau menghapus teks sesuai keinginan. Langkah Anda selanjutnya adalah memodifikasi semuanya agar sesuai dengan kebutuhan Anda sendiri. Misalnya, di beberapa keyboard saya, saya telah menggunakan TextView daripada Buttons karena lebih mudah untuk menyesuaikannya.
Catatan
Di file layout xml, Anda juga bisa menggunakan TextViewa Buttonjika Anda ingin membuat kunci terlihat lebih baik. Lalu buat saja latar belakang menjadi drawable yang mengubah status tampilan saat ditekan.
Keyboard kustom lanjutan: Untuk fleksibilitas lebih dalam tampilan keyboard dan peralihan keyboard, saya sekarang membuat tampilan tombol kustom yang subkelas Viewdan keyboard kustom yang subkelas ViewGroup. Keyboard menjabarkan semua tombol secara terprogram. Tombol tersebut menggunakan antarmuka untuk berkomunikasi dengan keyboard (mirip dengan cara fragmen berkomunikasi dengan suatu aktivitas). Ini tidak diperlukan jika Anda hanya memerlukan satu tata letak keyboard karena tata letak xml berfungsi dengan baik untuk itu. Tetapi jika Anda ingin melihat contoh dari apa yang telah saya kerjakan, lihat semua kelas Key*dan di sini . Perhatikan bahwa saya juga menggunakan tampilan kontainer di sana yang fungsinya untuk menukar keyboard masuk dan keluar.Keyboard*
jawaban Anda bagus, tetapi bagaimana kami dapat mengatur peralihan antara keyboard asli dan keyboard baru ini.
Kishan Donga
@KishanDonga, Pada keyboard Anda, Anda dapat menambahkan kunci untuk berpindah keyboard. Ketika pengguna menekannya, panggil InputMethodManager#showInputMethodPicker(). Jika keyboard asli tidak memiliki kunci seperti itu, satu-satunya cara pengguna dapat beralih ke keyboard Anda adalah dengan melakukannya secara manual dalam pengaturan sistem. Apple lebih unggul dari Android dalam hal ini, karena Apple mengharuskan semua keyboard memiliki tombol pengalih keyboard.
Suragch
@KishanDonga, saya baru menyadari bahwa jawaban ini tentang keyboard dalam aplikasi, bukan keyboard sistem. Jika Anda ingin beralih antara dua keyboard kustom, Anda dapat menukarnya secara terprogram masuk dan keluar dari tampilan penampung. Cukup tambahkan tombol keyboard swap di kedua keyboard. Lihat catatan dan tautan "papan ketik khusus lanjutan" saya di jawaban di atas.
Suragch
Jika Anda ingin beralih antara keyboard dan keyboard sistem, maka sembunyikan keyboard sistem dan tampilkan keyboard Anda pada waktu yang tepat (dan sebaliknya).
Suragch
1
@MarekTakac, Anda perlu menonaktifkan keyboard sistem dan menambahkan keyboard kustom Anda di setiap aktivitas. Jika suatu aktivitas memiliki beberapa EditTextdetik maka Anda perlu menambahkannya onFocusChangedListenersehingga ketika aktivitas tersebut menerima fokus, Anda dapat menetapkannya InputConnectiondari saat ini EditTextke keyboard kustom Anda.
sekarang Anda memiliki kbdyang merupakan tampilan normal.
Hal yang menyenangkan tentang ini adalah R.xml.custommengacu pada /res/xml/custom.xml, yang mendefinisikan tata letak keyboard dalam xml. Untuk informasi lebih lanjut tentang file ini, lihat di sini: Keyboard , Keyboard.Row , Keyboard.Key .
Anda harus berada di baris yang sama dengan tata letak yang berbeda.
Sunting: Jika Anda hanya membutuhkan keyboard di aplikasi Anda, itu sangat sederhana! Buat tata letak linier dengan orientasi vertikal, dan buat 3 tata letak linier di dalamnya dengan orientasi horizontal. Kemudian tempatkan tombol dari setiap baris di setiap tata letak linier horizontal tersebut, dan tetapkan properti bobot ke tombol. Gunakan android: layout_weight = 1 untuk semuanya, sehingga jarak keduanya sama.
Ini akan menyelesaikannya. Jika Anda tidak mendapatkan apa yang diharapkan, silakan posting kodenya di sini, dan kami di sini untuk membantu Anda!
Saya menemukan posting ini baru-baru ini ketika saya mencoba memutuskan metode apa yang akan digunakan untuk membuat keyboard khusus saya sendiri. Saya menemukan API sistem Android sangat terbatas, jadi saya memutuskan untuk membuat keyboard dalam aplikasi saya sendiri. Menggunakan jawaban Suragch sebagai dasar penelitian saya, saya melanjutkan merancang komponen keyboard saya sendiri . Itu diposting di GitHub dengan lisensi MIT. Mudah-mudahan ini akan menghemat banyak waktu dan sakit kepala orang lain.
Arsitekturnya cukup fleksibel. Ada satu tampilan utama (CustomKeyboardView) yang dapat Anda masukkan dengan tata letak keyboard dan pengontrol apa pun yang Anda inginkan.
Anda hanya perlu mendeklarasikan CustomKeyboardView dalam aktivitas Anda xml (Anda juga dapat melakukannya secara terprogram):
Kemudian daftarkan EditText Anda dengannya dan beri tahu jenis keyboard apa yang harus mereka gunakan:
override fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val numberField:EditText= findViewById(R.id.testNumberField)
val numberDecimalField:EditText= findViewById(R.id.testNumberDecimalField)
val qwertyField:EditText= findViewById(R.id.testQwertyField)
keyboard = findViewById(R.id.customKeyboardView)
keyboard.registerEditText(CustomKeyboardView.KeyboardType.NUMBER, numberField)
keyboard.registerEditText(CustomKeyboardView.KeyboardType.NUMBER_DECIMAL, numberDecimalField)
keyboard.registerEditText(CustomKeyboardView.KeyboardType.QWERTY, qwertyField)}
CustomKeyboardView menangani sisanya!
Saya mendapatkan bola menggelinding dengan keyboard Number, NumberDecimal, dan QWERTY. Jangan ragu untuk mengunduhnya dan membuat tata letak dan pengontrol Anda sendiri. Ini terlihat seperti ini:
Meskipun ini bukan arsitektur yang Anda pilih, semoga akan membantu jika melihat kode sumber untuk keyboard dalam aplikasi yang berfungsi.
Sejauh ini, Suragch memberikan jawaban terbaik, tetapi dia melewatkan hal-hal kecil tertentu yang penting untuk membuat aplikasi itu terkompilasi.
Saya berharap dapat membuat jawaban yang lebih baik dari Suragch dengan memperbaiki jawabannya. Saya akan menambahkan semua elemen yang hilang yang tidak dia masukkan.
Saya menyusun apk saya menggunakan aplikasi android, APK Builder 1.1.0. Jadi mari kita mulai.
Untuk membangun aplikasi Android, kita memerlukan beberapa file dan folder yang diatur dalam format tertentu dan dikapitalisasi sesuai.
res layout -> file xml yang menggambarkan bagaimana tampilan aplikasi di ponsel. Mirip dengan bagaimana html membentuk tampilan halaman web di browser. Mengizinkan aplikasi Anda agar sesuai di layar.
nilai -> data konstan seperti colors.xml, strings.xml, styles.xml. File-file ini harus dieja dengan benar.
drawable -> foto {jpeg, png, ...}; Beri nama apa saja.
mipmap -> lebih banyak foto. digunakan untuk ikon aplikasi?
xml -> lebih banyak file xml.
src -> bertindak seperti JavaScript di html. file tata letak akan memulai tampilan awal dan file java Anda akan secara dinamis mengontrol elemen tag dan memicu peristiwa. Acara juga dapat diaktifkan langsung di layout.xml seperti di html.
AndroidManifest.xml -> File ini mendaftarkan tentang aplikasi Anda. Nama aplikasi, Jenis program, izin yang diperlukan, dll. Hal ini tampaknya membuat Android lebih aman. Program benar-benar tidak dapat melakukan apa yang tidak mereka minta dalam Manifes.
Sekarang ada 4 jenis program Android, aktivitas, layanan, penyedia konten, dan penerima siaran. Keyboard kami akan menjadi layanan, yang memungkinkannya berjalan di latar belakang. Ini tidak akan muncul di daftar aplikasi yang akan diluncurkan; tapi itu bisa dicopot.
Untuk mengompilasi aplikasi Anda, melibatkan gradle, dan penandatanganan apk. Anda dapat meneliti itu atau menggunakan Pembuat APK untuk android. Ini sangat mudah.
Sekarang setelah kita memahami pengembangan Android, mari kita buat file dan foldernya.
Buat file dan folder seperti yang saya bahas di atas. Direktori saya akan terlihat sebagai berikut:
Papan Angka
AndroidManifest.xml
src
Saragch
num_pad
MyInputMethodService.java
res
drawable
Suragch_NumPad_icon.png
tata letak
key_preview.xml
keyboard_view.xml
xml
method.xml
number_pad.xml
nilai-nilai
colors.xml
strings.xml
styles.xml
Ingat jika Anda menggunakan ide seperti Android Studio, mungkin memiliki file proyek.
Tentu saja ini bisa dengan mudah diedit sesuai keinginan Anda. Anda bahkan dapat menggunakan gambar sebagai pengganti kata-kata untuk label.
Suragch tidak mendemonstrasikan file dalam folder values dan menganggap kami memiliki akses ke Android Studio; yang secara otomatis membuatnya. Untung saya memiliki Pembuat APK.
<resources><!-- Base application theme. --><stylename="AppTheme"parent="android:Theme.Material.Light.DarkActionBar"><!-- Customize your theme here.--></style></resources>
H: Numpad / AndroidManifest.xml
Ini adalah file yang benar-benar dapat diperdebatkan. Di sini saya merasa saya tidak akan pernah menyusun program saya. menangis. menangis. Jika Anda memeriksa jawaban Suracgh, Anda melihat dia membiarkan set field pertama kosong, dan menambahkan tag aktivitas dalam file ini. Seperti yang saya katakan ada empat jenis program Android. Aktivitas adalah aplikasi biasa dengan ikon peluncur. Numpad ini bukan aktivitas! Selanjutnya dia tidak melaksanakan aktivitas apapun.
Teman saya tidak menyertakan tag aktivitas. Program Anda akan dikompilasi, dan ketika Anda mencoba meluncurkannya akan macet! Adapun xmlns: android dan using-sdk; Saya tidak dapat membantu Anda di sana. Coba saja pengaturan saya jika berfungsi.
Seperti yang Anda lihat, ada tag layanan, yang mendaftarkannya sebagai layanan. Juga service.android:name haruslah nama layanan perluasan kelas publik di file java kita. Ini HARUS menggunakan huruf besar sebagaimana mestinya. Juga paket adalah nama dari paket yang kami deklarasikan dalam file java.
Catatan: Menurut saya java adalah alternatif dari src.
Ini adalah file masalah lain tetapi tidak sesulit file manifes. Seperti yang saya tahu Java cukup baik untuk mengetahui apa itu apa, apa yang tidak. Saya hampir tidak tahu xml dan bagaimana hubungannya dengan pengembangan Android!
Masalahnya di sini adalah dia tidak mengimpor apapun! Maksudku, dia memberi kami file "lengkap" yang menggunakan nama yang tidak bisa diselesaikan! InputMethodService, Keyboard, dll. Itu adalah latihan yang buruk Pak Suragch. Terima kasih telah membantu saya tetapi bagaimana Anda mengharapkan kode untuk dikompilasi jika nama tidak dapat diselesaikan?
Berikut ini adalah versi yang diedit dengan benar. Saya kebetulan menerkam beberapa petunjuk untuk mengantarkan saya ke tempat yang tepat untuk mempelajari apa yang sebenarnya harus diimpor.
packageSaragch.num_pad;import android.inputmethodservice.InputMethodService;import android.inputmethodservice.KeyboardView;import android.inputmethodservice.Keyboard;import android.text.TextUtils;import android.view.inputmethod.InputConnection;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Build;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;publicclassMyInputMethodServiceextendsInputMethodServiceimplementsKeyboardView.OnKeyboardActionListener{@OverridepublicView onCreateInputView(){// get the KeyboardView and add our Keyboard layout to itKeyboardView keyboardView =(KeyboardView)getLayoutInflater().inflate(R.layout.keyboard_view,null);Keyboard keyboard =newKeyboard(this, R.xml.number_pad);
keyboardView.setKeyboard(keyboard);
keyboardView.setOnKeyboardActionListener(this);return keyboardView;}@Overridepublicvoid onKey(int primaryCode,int[] keyCodes){InputConnection ic = getCurrentInputConnection();if(ic ==null)return;switch(primaryCode){caseKeyboard.KEYCODE_DELETE:CharSequence selectedText = ic.getSelectedText(0);if(TextUtils.isEmpty(selectedText)){// no selection, so delete previous character
ic.deleteSurroundingText(1,0);}else{// delete the selection
ic.commitText("",1);}
ic.deleteSurroundingText(1,0);break;default:char code =(char) primaryCode;
ic.commitText(String.valueOf(code),1);}}@Overridepublicvoid onPress(int primaryCode){}@Overridepublicvoid onRelease(int primaryCode){}@Overridepublicvoid onText(CharSequence text){}@Overridepublicvoid swipeLeft(){}@Overridepublicvoid swipeRight(){}@Overridepublicvoid swipeDown(){}@Overridepublicvoid swipeUp(){}}
Kompilasi dan tanda tangani proyek Anda.
Di sinilah saya tidak mengerti sebagai pemula oleh pengembang Android. Saya ingin mempelajarinya secara manual, karena saya yakin programmer sejati dapat mengkompilasi secara manual.
Menurut saya gradle adalah salah satu alat untuk menyusun dan mengemas ke apk. apk tampaknya seperti file jar atau rar untuk file zip. Kemudian ada dua jenis penandatanganan. kunci debug yang tidak diizinkan di play store dan kunci pribadi.
Baiklah, mari kita bantu Tuan Saragch. Dan terima kasih telah menonton video saya. Suka, berlangganan.
Jawaban:
Pertama-tama Anda akan membutuhkan
keyboard.xml
file yang akan ditempatkan dires/xml
folder (jika folder tidak ada, buatlah).** Perhatikan bahwa Anda harus membuat
backspace
drawable dan menempatkannya di folder res / drawable-ldpi dengan ukuran yang sangat kecil (seperti 18x18 piksel)Kemudian di file xml yang Anda inginkan untuk digunakan (di mana TextView Anda berada), Anda harus menambahkan kode berikut:
** Perhatikan bahwa file xml yang akan Anda tempatkan
android.inputmethodservice.KeyboardView
,RelativeLayout
harus bisa mengaturalignParentBottom="true"
(Biasanya keyboard disajikan di bagian bawah layar)Kemudian Anda perlu menambahkan kode berikut dalam
onCreate
fungsiActivity
yang menanganiTextView
Anda ingin memasang keyboard** Perhatikan bahwa
mKeyboard
danmKeyboardView
merupakan variabel kelas privat yang harus Anda buat.Kemudian Anda memerlukan fungsi berikut untuk membuka keyboard (Anda harus mengaitkannya dengan TextView melalui
onClick
properti xml)Dan akhirnya Anda membutuhkan
OnKeyboardActionListener
yang akan menangani acara AndaSemoga membantu !!!
Sebagian besar kode ditemukan di sini
sumber
Keyboard sistem
Jawaban ini menjelaskan cara membuat keyboard sistem kustom yang dapat digunakan di aplikasi apa pun yang telah diinstal pengguna di ponsel mereka. Jika Anda ingin membuat keyboard yang hanya akan digunakan dalam aplikasi Anda sendiri, lihat jawaban saya yang lain .
Contoh di bawah ini akan terlihat seperti ini. Anda dapat memodifikasinya untuk tata letak keyboard apa pun.
Langkah-langkah berikut menunjukkan cara membuat keyboard sistem kustom yang berfungsi. Sebisa mungkin saya mencoba menghapus kode yang tidak perlu. Jika ada fitur lain yang Anda butuhkan, saya memberikan tautan ke bantuan lebih lanjut di bagian akhir.
1. Mulai proyek Android baru
Saya menamai proyek saya "Keyboard Khusus". Sebut saja sesuka Anda. Tidak ada hal lain yang istimewa di sini. Saya hanya akan meninggalkan
MainActivity
dan "Hello World!" tata letak apa adanya.2. Tambahkan file tata letak
Tambahkan dua file berikut ke
res/layout
folder aplikasi Anda :keyboard_view.xml
Tampilan ini seperti wadah yang akan menahan keyboard kita. Dalam contoh ini hanya ada satu keyboard, tetapi Anda dapat menambahkan keyboard lain dan menukarnya masuk dan keluar dari ini
KeyboardView
.key_preview.xml
Pratinjau tombol adalah tata letak yang muncul saat Anda menekan tombol keyboard. Itu hanya menunjukkan tombol apa yang Anda tekan (jika jari-jari besar dan gemuk Anda menutupinya). Ini bukan popup pilihan ganda. Untuk itu Anda harus melihat tampilan Kandidat .
3. Tambahkan file xml pendukung
Buat
xml
folder dires
folder Anda . (Klik kananres
dan pilih New> Directory .)Kemudian tambahkan dua file xml berikut ke dalamnya. (Klik kanan
xml
folder dan pilih New> XML resource file .)number_pad.xml
Di sinilah mulai menjadi lebih menarik. Ini
Keyboard
mendefinisikan tata letak kunci .Berikut beberapa hal yang perlu diperhatikan:
keyWidth
: Ini adalah lebar default setiap kunci. The20%p
berarti bahwa setiap tombol harus mengambil 20% dari lebar p Arent. Ini dapat diganti dengan kunci individu, seperti yang Anda lihat terjadi dengan tombol Delete dan Enter di baris ketiga.keyHeight
: Ini sulit dikodekan di sini, tetapi Anda dapat menggunakan sesuatu seperti@dimen/key_height
untuk menyetelnya secara dinamis untuk ukuran layar yang berbeda.Gap
: Celah horizontal dan vertikal menunjukkan berapa banyak ruang yang tersisa di antara tombol. Bahkan jika Anda mengaturnya,0px
masih ada celah kecil.codes
: Ini bisa berupa Unicode atau nilai kode khusus yang menentukan apa yang terjadi atau apa yang dimasukkan saat tombol ditekan. LihatkeyOutputText
apakah Anda ingin memasukkan string Unicode yang lebih panjang.keyLabel
: Ini adalah teks yang ditampilkan di tombol.keyEdgeFlags
: Ini menunjukkan tepi mana kunci harus sejajar.isRepeatable
: Jika Anda menahan tombol itu akan terus mengulangi masukan.method.xml
File ini memberi tahu sistem subtipe metode masukan yang tersedia. Saya hanya memasukkan versi minimal di sini.
4. Tambahkan kode Java untuk menangani input tombol
Buat file Java baru. Sebut saja
MyInputMethodService
. File ini menyatukan semuanya. Ini menangani masukan yang diterima dari keyboard dan mengirimkannya ke tampilan apa pun yang menerimanya (sebuahEditText
, misalnya).Catatan:
OnKeyboardActionListener
mendengarkan untuk input keyboard. Itu juga membutuhkan semua metode kosong dalam contoh ini.InputConnection
yang digunakan untuk mengirim input ke tampilan lain sepertiEditText
.5. Perbarui manifes
Saya meletakkan ini yang terakhir daripada yang pertama karena ini mengacu pada file yang sudah kami tambahkan di atas. Untuk mendaftarkan keyboard kustom Anda sebagai keyboard sistem, Anda perlu menambahkan
service
bagian ke file AndroidManifest.xml Anda . Letakkan diapplication
bagian setelahactivity
.Itu dia! Anda seharusnya dapat menjalankan aplikasi Anda sekarang. Namun, Anda tidak akan melihat banyak sampai Anda mengaktifkan keyboard Anda di pengaturan.
6. Aktifkan keyboard di Pengaturan
Setiap pengguna yang ingin menggunakan keyboard Anda harus mengaktifkannya di pengaturan Android. Untuk petunjuk mendetail tentang cara melakukannya, lihat tautan berikut:
Berikut ringkasannya:
Sekarang Anda harus dapat menggunakan keyboard Anda di mana pun Anda dapat mengetik di Android.
Pelajaran lanjutan
Keyboard di atas dapat digunakan, tetapi untuk membuat keyboard yang ingin digunakan orang lain, Anda mungkin harus menambahkan lebih banyak fungsionalitas. Pelajari tautan di bawah untuk mempelajari caranya.
Sedang terjadi
Tidak suka
KeyboardView
tampilan dan perilaku standar ? Saya pasti tidak. Sepertinya belum diperbarui sejak Android 2.0. Bagaimana dengan semua keyboard khusus di Play Store? Mereka tidak terlihat seperti keyboard jelek di atas.Kabar baiknya adalah Anda dapat sepenuhnya menyesuaikan tampilan dan perilaku papan ketik Anda sendiri. Anda perlu melakukan hal-hal berikut:
ViewGroup
. Anda dapat mengisinya denganButton
s atau bahkan membuat tampilan kunci kustom Anda sendiri untuk subkelas tersebutView
. Jika Anda menggunakan tampilan popup, catat ini .onKeyClicked(String text)
atauonBackspace()
.keyboard_view.xml
,key_preview.xml
ataunumber_pad.xml
dijelaskan dalam arah atas, karena ini semua untuk standarKeyboardView
. Anda akan menangani semua aspek UI ini dalam tampilan kustom Anda.MyInputMethodService
kelas Anda , terapkan pendengar keyboard khusus yang Anda tentukan di kelas keyboard Anda. Ini menggantikanKeyboardView.OnKeyboardActionListener
, yang tidak lagi dibutuhkan.MyInputMethodService
kelas AndaonCreateInputView()
, buat dan kembalikan instance dari keyboard kustom Anda. Jangan lupa untuk menyetel pendengar khusus keyboard kethis
.sumber
Keyboard Dalam Aplikasi
Jawaban ini menjelaskan cara membuat keyboard kustom untuk digunakan secara eksklusif dalam aplikasi Anda. Jika Anda ingin membuat keyboard sistem yang dapat digunakan di aplikasi apa pun, lihat jawaban saya yang lain .
Contohnya akan terlihat seperti ini. Anda dapat memodifikasinya untuk tata letak keyboard apa pun.
1. Mulai proyek Android baru
Saya menamai proyek saya
InAppKeyboard
. Panggil punyamu sesuka kamu.2. Tambahkan file tata letak
Tata letak keyboard
Tambahkan file tata letak ke
res/layout
folder. Aku menelepon milikkukeyboard
. Keyboard akan menjadi tampilan gabungan khusus yang akan kami perbesar dari file tata letak xml ini. Anda dapat menggunakan tata letak apa pun yang Anda suka untuk mengatur kunci, tetapi saya menggunakan fileLinearLayout
. Catatmerge
tagnya.res / layout / keyboard.xml
Tata letak aktivitas
Untuk tujuan demonstrasi, aktivitas kami memiliki satu
EditText
dan keyboard ada di bagian bawah. Saya menyebut tampilan keyboard kustom sayaMyKeyboard
. (Kami akan segera menambahkan kode ini, jadi abaikan kesalahannya untuk saat ini.) Manfaat meletakkan semua kode keyboard kami ke dalam satu tampilan adalah membuatnya mudah untuk digunakan kembali di aktivitas atau aplikasi lain.res / layout / activity_main.xml
3. Tambahkan file Keyboard Java
Tambahkan file Java baru. Aku menelepon milikku
MyKeyboard
.Hal terpenting untuk diperhatikan di sini adalah bahwa tidak ada tautan keras ke salah satu
EditText
atauActivity
. Ini membuatnya mudah untuk dicolokkan ke aplikasi atau aktivitas apa pun yang membutuhkannya. Tampilan papan ketik khusus ini juga menggunakanInputConnection
, yang meniru cara papan ketik sistem berkomunikasi denganEditText
. Inilah cara kami menghindari tautan keras.MyKeyboard
adalah tampilan gabungan yang memperbesar tata letak tampilan yang kami tentukan di atas.MyKeyboard.java
4. Arahkan keyboard ke EditText
Untuk keyboard sistem, Android menggunakan InputMethodManager untuk mengarahkan keyboard ke fokus
EditText
. Dalam contoh ini, aktivitas akan berlangsung dengan menyediakan link dariEditText
ke keyboard kustom kita ke.Karena kami tidak menggunakan keyboard sistem, kami perlu menonaktifkannya agar tidak muncul saat kami menyentuh
EditText
. Kedua, kita perlu mendapatkanInputConnection
dariEditText
dan memberikannya ke keyboard kita.MainActivity.java
Jika Aktivitas Anda memiliki beberapa EditText, maka Anda perlu menulis kode untuk meneruskan EditText yang benar
InputConnection
ke keyboard. (Anda dapat melakukan ini dengan menambahkanOnFocusChangeListener
danOnClickListener
ke EditTexts. Lihat artikel ini untuk pembahasannya.) Anda mungkin juga ingin menyembunyikan atau menampilkan keyboard Anda pada waktu yang tepat.Jadi
Itu dia. Anda seharusnya dapat menjalankan aplikasi contoh sekarang dan memasukkan atau menghapus teks sesuai keinginan. Langkah Anda selanjutnya adalah memodifikasi semuanya agar sesuai dengan kebutuhan Anda sendiri. Misalnya, di beberapa keyboard saya, saya telah menggunakan TextView daripada Buttons karena lebih mudah untuk menyesuaikannya.
Catatan
TextView
aButton
jika Anda ingin membuat kunci terlihat lebih baik. Lalu buat saja latar belakang menjadi drawable yang mengubah status tampilan saat ditekan.View
dan keyboard kustom yang subkelasViewGroup
. Keyboard menjabarkan semua tombol secara terprogram. Tombol tersebut menggunakan antarmuka untuk berkomunikasi dengan keyboard (mirip dengan cara fragmen berkomunikasi dengan suatu aktivitas). Ini tidak diperlukan jika Anda hanya memerlukan satu tata letak keyboard karena tata letak xml berfungsi dengan baik untuk itu. Tetapi jika Anda ingin melihat contoh dari apa yang telah saya kerjakan, lihat semua kelasKey*
dan di sini . Perhatikan bahwa saya juga menggunakan tampilan kontainer di sana yang fungsinya untuk menukar keyboard masuk dan keluar.Keyboard*
sumber
InputMethodManager#showInputMethodPicker()
. Jika keyboard asli tidak memiliki kunci seperti itu, satu-satunya cara pengguna dapat beralih ke keyboard Anda adalah dengan melakukannya secara manual dalam pengaturan sistem. Apple lebih unggul dari Android dalam hal ini, karena Apple mengharuskan semua keyboard memiliki tombol pengalih keyboard.EditText
detik maka Anda perlu menambahkannyaonFocusChangedListener
sehingga ketika aktivitas tersebut menerima fokus, Anda dapat menetapkannyaInputConnection
dari saat iniEditText
ke keyboard kustom Anda.Penggunaan
KeyboardView
:sekarang Anda memiliki
kbd
yang merupakan tampilan normal.Hal yang menyenangkan tentang ini adalah
R.xml.custom
mengacu pada/res/xml/custom.xml
, yang mendefinisikan tata letak keyboard dalam xml. Untuk informasi lebih lanjut tentang file ini, lihat di sini: Keyboard , Keyboard.Row , Keyboard.Key .sumber
Berikut adalah contoh proyek untuk soft keyboard.
https://developer.android.com/guide/topics/text/creating-input-method.html
Anda harus berada di baris yang sama dengan tata letak yang berbeda.
Sunting: Jika Anda hanya membutuhkan keyboard di aplikasi Anda, itu sangat sederhana! Buat tata letak linier dengan orientasi vertikal, dan buat 3 tata letak linier di dalamnya dengan orientasi horizontal. Kemudian tempatkan tombol dari setiap baris di setiap tata letak linier horizontal tersebut, dan tetapkan properti bobot ke tombol. Gunakan android: layout_weight = 1 untuk semuanya, sehingga jarak keduanya sama.
Ini akan menyelesaikannya. Jika Anda tidak mendapatkan apa yang diharapkan, silakan posting kodenya di sini, dan kami di sini untuk membantu Anda!
sumber
Salah satu contoh terdokumentasi terbaik yang saya temukan.
http://www.fampennings.nl/maarten/android/09keyboard/index.htm
KeyboardView
file XML terkait dan kode sumber disediakan.sumber
Saya menemukan posting ini baru-baru ini ketika saya mencoba memutuskan metode apa yang akan digunakan untuk membuat keyboard khusus saya sendiri. Saya menemukan API sistem Android sangat terbatas, jadi saya memutuskan untuk membuat keyboard dalam aplikasi saya sendiri. Menggunakan jawaban Suragch sebagai dasar penelitian saya, saya melanjutkan merancang komponen keyboard saya sendiri . Itu diposting di GitHub dengan lisensi MIT. Mudah-mudahan ini akan menghemat banyak waktu dan sakit kepala orang lain.
Arsitekturnya cukup fleksibel. Ada satu tampilan utama (CustomKeyboardView) yang dapat Anda masukkan dengan tata letak keyboard dan pengontrol apa pun yang Anda inginkan.
Anda hanya perlu mendeklarasikan CustomKeyboardView dalam aktivitas Anda xml (Anda juga dapat melakukannya secara terprogram):
Kemudian daftarkan EditText Anda dengannya dan beri tahu jenis keyboard apa yang harus mereka gunakan:
CustomKeyboardView menangani sisanya!
Saya mendapatkan bola menggelinding dengan keyboard Number, NumberDecimal, dan QWERTY. Jangan ragu untuk mengunduhnya dan membuat tata letak dan pengontrol Anda sendiri. Ini terlihat seperti ini:
Meskipun ini bukan arsitektur yang Anda pilih, semoga akan membantu jika melihat kode sumber untuk keyboard dalam aplikasi yang berfungsi.
Sekali lagi, inilah tautan ke proyek: Keyboard Dalam Aplikasi Khusus
sumber
Sejauh ini, Suragch memberikan jawaban terbaik, tetapi dia melewatkan hal-hal kecil tertentu yang penting untuk membuat aplikasi itu terkompilasi.
Saya berharap dapat membuat jawaban yang lebih baik dari Suragch dengan memperbaiki jawabannya. Saya akan menambahkan semua elemen yang hilang yang tidak dia masukkan.
Saya menyusun apk saya menggunakan aplikasi android, APK Builder 1.1.0. Jadi mari kita mulai.
Untuk membangun aplikasi Android, kita memerlukan beberapa file dan folder yang diatur dalam format tertentu dan dikapitalisasi sesuai.
res layout -> file xml yang menggambarkan bagaimana tampilan aplikasi di ponsel. Mirip dengan bagaimana html membentuk tampilan halaman web di browser. Mengizinkan aplikasi Anda agar sesuai di layar.
nilai -> data konstan seperti colors.xml, strings.xml, styles.xml. File-file ini harus dieja dengan benar.
drawable -> foto {jpeg, png, ...}; Beri nama apa saja.
mipmap -> lebih banyak foto. digunakan untuk ikon aplikasi?
xml -> lebih banyak file xml.
src -> bertindak seperti JavaScript di html. file tata letak akan memulai tampilan awal dan file java Anda akan secara dinamis mengontrol elemen tag dan memicu peristiwa. Acara juga dapat diaktifkan langsung di layout.xml seperti di html.
AndroidManifest.xml -> File ini mendaftarkan tentang aplikasi Anda. Nama aplikasi, Jenis program, izin yang diperlukan, dll. Hal ini tampaknya membuat Android lebih aman. Program benar-benar tidak dapat melakukan apa yang tidak mereka minta dalam Manifes.
Sekarang ada 4 jenis program Android, aktivitas, layanan, penyedia konten, dan penerima siaran. Keyboard kami akan menjadi layanan, yang memungkinkannya berjalan di latar belakang. Ini tidak akan muncul di daftar aplikasi yang akan diluncurkan; tapi itu bisa dicopot.
Untuk mengompilasi aplikasi Anda, melibatkan gradle, dan penandatanganan apk. Anda dapat meneliti itu atau menggunakan Pembuat APK untuk android. Ini sangat mudah.
Sekarang setelah kita memahami pengembangan Android, mari kita buat file dan foldernya.
Buat file dan folder seperti yang saya bahas di atas. Direktori saya akan terlihat sebagai berikut:
Ingat jika Anda menggunakan ide seperti Android Studio, mungkin memiliki file proyek.
J: Papan Angka / res / layout / key_preview.xml
B: Papan Angka / res / layout / keyboard_view.xml
C: Papan Angka / res / xml / metode.xml
D: Numpad / res / xml / number_pad.xml
Tentu saja ini bisa dengan mudah diedit sesuai keinginan Anda. Anda bahkan dapat menggunakan gambar sebagai pengganti kata-kata untuk label.
Suragch tidak mendemonstrasikan file dalam folder values dan menganggap kami memiliki akses ke Android Studio; yang secara otomatis membuatnya. Untung saya memiliki Pembuat APK.
E: Papan Angka / res / nilai / warna.xml
F: Papan Angka / res / nilai / strings.xml
G: Papan Angka / res / nilai / gaya.xml
H: Numpad / AndroidManifest.xml
Ini adalah file yang benar-benar dapat diperdebatkan. Di sini saya merasa saya tidak akan pernah menyusun program saya. menangis. menangis. Jika Anda memeriksa jawaban Suracgh, Anda melihat dia membiarkan set field pertama kosong, dan menambahkan tag aktivitas dalam file ini. Seperti yang saya katakan ada empat jenis program Android. Aktivitas adalah aplikasi biasa dengan ikon peluncur. Numpad ini bukan aktivitas! Selanjutnya dia tidak melaksanakan aktivitas apapun.
Teman saya tidak menyertakan tag aktivitas. Program Anda akan dikompilasi, dan ketika Anda mencoba meluncurkannya akan macet! Adapun xmlns: android dan using-sdk; Saya tidak dapat membantu Anda di sana. Coba saja pengaturan saya jika berfungsi.
Seperti yang Anda lihat, ada tag layanan, yang mendaftarkannya sebagai layanan. Juga service.android:name haruslah nama layanan perluasan kelas publik di file java kita. Ini HARUS menggunakan huruf besar sebagaimana mestinya. Juga paket adalah nama dari paket yang kami deklarasikan dalam file java.
I: NumPad / src / Saragch / num_pad / MyInputMethodService.java
Catatan: Menurut saya java adalah alternatif dari src.
Ini adalah file masalah lain tetapi tidak sesulit file manifes. Seperti yang saya tahu Java cukup baik untuk mengetahui apa itu apa, apa yang tidak. Saya hampir tidak tahu xml dan bagaimana hubungannya dengan pengembangan Android!
Masalahnya di sini adalah dia tidak mengimpor apapun! Maksudku, dia memberi kami file "lengkap" yang menggunakan nama yang tidak bisa diselesaikan! InputMethodService, Keyboard, dll. Itu adalah latihan yang buruk Pak Suragch. Terima kasih telah membantu saya tetapi bagaimana Anda mengharapkan kode untuk dikompilasi jika nama tidak dapat diselesaikan?
Berikut ini adalah versi yang diedit dengan benar. Saya kebetulan menerkam beberapa petunjuk untuk mengantarkan saya ke tempat yang tepat untuk mempelajari apa yang sebenarnya harus diimpor.
Kompilasi dan tanda tangani proyek Anda.
Di sinilah saya tidak mengerti sebagai pemula oleh pengembang Android. Saya ingin mempelajarinya secara manual, karena saya yakin programmer sejati dapat mengkompilasi secara manual.
Menurut saya gradle adalah salah satu alat untuk menyusun dan mengemas ke apk. apk tampaknya seperti file jar atau rar untuk file zip. Kemudian ada dua jenis penandatanganan. kunci debug yang tidak diizinkan di play store dan kunci pribadi.
Baiklah, mari kita bantu Tuan Saragch. Dan terima kasih telah menonton video saya. Suka, berlangganan.
sumber
Punya masalah yang sama. Saya menggunakan tata letak tabel pada awalnya tetapi tata letak terus berubah setelah menekan tombol. Menemukan halaman ini sangat berguna. http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-creating-a-numeric-keypad-with-gridlayout/
sumber