一、应用名称

Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)

 

二、应用图标

Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)

 

 三、应用说明

 

现在通行的阿拉伯语键盘布局并无规律可循,阿拉伯语使用者需要花费较多时间才能掌握指法。这款傻瓜式阿拉伯语输入法依照阿语字母排序,可满足基本的阿语输入需求;使用者无需学习,可立即上手。

 

四、项目结构

Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)

 

五、主要代码

src/com.example.dummy_arabic_input/DummyArabicInputService.java

  1 package com.example.dummy_arabic_input;
  2 
  3 import android.inputmethodservice.InputMethodService;
  4 import android.util.Log;
  5 import android.view.View;
  6 import android.view.View.OnClickListener;
  7 import android.view.inputmethod.EditorInfo;
  8 import android.view.inputmethod.InputConnection;
  9 import android.widget.Button;
 10 
 11 public class DummyArabicInputService extends InputMethodService implements
 12         OnClickListener
 13 {
 14     
 15     @Override
 16     public void onCreate()//不用写(Bundle savedInstanceState)
 17     //因为这里没有Activity界面
 18     {
 19         super.onCreate();
 20         Log.d("dummy_arabic_input_onCreate", "invoked");
 21     }
 22 
 23     @Override
 24     public View onCreateInputView()
 25     {
 26         View view = getLayoutInflater().inflate(R.layout.arabic_keyboard, null);
 27         //LayoutInflater is a class used to instantiate layout XML 
 28         //file into its corresponding View objects.
 29         //inflate(int resource, ViewGroup root)
 30         view.findViewById(R.id.btn1).setOnClickListener(this);
 31         view.findViewById(R.id.btn2).setOnClickListener(this);
 32         view.findViewById(R.id.btn3).setOnClickListener(this);
 33         view.findViewById(R.id.btn4).setOnClickListener(this);
 34         view.findViewById(R.id.btn5).setOnClickListener(this);
 35         view.findViewById(R.id.btn6).setOnClickListener(this);
 36         view.findViewById(R.id.btn7).setOnClickListener(this);
 37         view.findViewById(R.id.btn8).setOnClickListener(this);
 38         view.findViewById(R.id.btn9).setOnClickListener(this);
 39         view.findViewById(R.id.btn10).setOnClickListener(this);
 40         view.findViewById(R.id.btn11).setOnClickListener(this);
 41         view.findViewById(R.id.btn12).setOnClickListener(this);
 42         view.findViewById(R.id.btn13).setOnClickListener(this);
 43         view.findViewById(R.id.btn14).setOnClickListener(this);
 44         view.findViewById(R.id.btn15).setOnClickListener(this);
 45         view.findViewById(R.id.btn16).setOnClickListener(this);
 46         view.findViewById(R.id.btn17).setOnClickListener(this);
 47         view.findViewById(R.id.btn18).setOnClickListener(this);
 48         view.findViewById(R.id.btn19).setOnClickListener(this);
 49         view.findViewById(R.id.btn20).setOnClickListener(this);
 50         view.findViewById(R.id.btn21).setOnClickListener(this);
 51         view.findViewById(R.id.btn22).setOnClickListener(this);
 52         view.findViewById(R.id.btn23).setOnClickListener(this);
 53         view.findViewById(R.id.btn24).setOnClickListener(this);
 54         view.findViewById(R.id.btn25).setOnClickListener(this);
 55         view.findViewById(R.id.btn26).setOnClickListener(this);
 56         view.findViewById(R.id.btn27).setOnClickListener(this);
 57         view.findViewById(R.id.btn28).setOnClickListener(this);
 58         view.findViewById(R.id.btn29).setOnClickListener(this);
 59         view.findViewById(R.id.btn30).setOnClickListener(this);
 60         view.findViewById(R.id.btn31).setOnClickListener(this);
 61         view.findViewById(R.id.btn32).setOnClickListener(this);
 62         view.findViewById(R.id.btn33).setOnClickListener(this);
 63         view.findViewById(R.id.btn34).setOnClickListener(this);
 64         view.findViewById(R.id.btn35).setOnClickListener(this);
 65         view.findViewById(R.id.btn36).setOnClickListener(this);
 66         view.findViewById(R.id.btn37).setOnClickListener(this);
 67         view.findViewById(R.id.btn38).setOnClickListener(this);
 68         view.findViewById(R.id.btn39).setOnClickListener(this);
 69         view.findViewById(R.id.btn40).setOnClickListener(this);
 70         view.findViewById(R.id.btn41).setOnClickListener(this);
 71         Log.d("dummy_arabic_input_onCreateInputView", "invoked");
 72         return view;
 73     }
 74 
 75     @Override
 76     public View onCreateCandidatesView() 
 77     //Create and return the view hierarchy used to show candidates.
 78     /* view hierarchy是用来说明在window中的view之间的关系的。 
 79     可以把view hierarchy认为是一棵翻转的tree structure,
 80     而window就是这棵树的最上面的节点(根节点)。
 81     树的下面就是父子view之间的关系。
 82     从视觉上来看,view hierarchy就是一个封闭的结构,
 83     就是一个view包含一个或多个view,而window包含所有的view。*/
 84     {
 85         //下面的View.Gone是View类的静态成员,
 86         //GONE: This view is invisible, 
 87         //and it doesn't take any space for layout purposes.
 88         //我们的智能输入法界面最上面一般会有一栏候选项(CandidatesView),
 89         //但我们这里创造的输入法不是智能输入法,不需要显示候选项,
 90         //所以这里将CandidatesView设为GONE,即不可见
 91         View view = getLayoutInflater().inflate(R.layout.arabic_keyboard, null);
 92         view.findViewById(R.id.btn1).setVisibility(View.GONE);
 93         view.findViewById(R.id.btn2).setVisibility(View.GONE);
 94         view.findViewById(R.id.btn3).setVisibility(View.GONE);
 95         view.findViewById(R.id.btn4).setVisibility(View.GONE);
 96         view.findViewById(R.id.btn5).setVisibility(View.GONE);
 97         view.findViewById(R.id.btn6).setVisibility(View.GONE);
 98         view.findViewById(R.id.btn7).setVisibility(View.GONE);
 99         view.findViewById(R.id.btn8).setVisibility(View.GONE);
100         view.findViewById(R.id.btn9).setVisibility(View.GONE);
101         view.findViewById(R.id.btn10).setVisibility(View.GONE);
102         view.findViewById(R.id.btn11).setVisibility(View.GONE);
103         view.findViewById(R.id.btn12).setVisibility(View.GONE);
104         view.findViewById(R.id.btn13).setVisibility(View.GONE);
105         view.findViewById(R.id.btn14).setVisibility(View.GONE);
106         view.findViewById(R.id.btn15).setVisibility(View.GONE);
107         view.findViewById(R.id.btn16).setVisibility(View.GONE);
108         view.findViewById(R.id.btn17).setVisibility(View.GONE);
109         view.findViewById(R.id.btn18).setVisibility(View.GONE);
110         view.findViewById(R.id.btn19).setVisibility(View.GONE);
111         view.findViewById(R.id.btn20).setVisibility(View.GONE);
112         view.findViewById(R.id.btn21).setVisibility(View.GONE);
113         view.findViewById(R.id.btn22).setVisibility(View.GONE);
114         view.findViewById(R.id.btn23).setVisibility(View.GONE);
115         view.findViewById(R.id.btn24).setVisibility(View.GONE);
116         view.findViewById(R.id.btn25).setVisibility(View.GONE);
117         view.findViewById(R.id.btn26).setVisibility(View.GONE);
118         view.findViewById(R.id.btn27).setVisibility(View.GONE);
119         view.findViewById(R.id.btn28).setVisibility(View.GONE);
120         view.findViewById(R.id.btn29).setVisibility(View.GONE);
121         view.findViewById(R.id.btn30).setVisibility(View.GONE);
122         view.findViewById(R.id.btn31).setVisibility(View.GONE);
123         view.findViewById(R.id.btn32).setVisibility(View.GONE);
124         view.findViewById(R.id.btn33).setVisibility(View.GONE);
125         view.findViewById(R.id.btn34).setVisibility(View.GONE);
126         view.findViewById(R.id.btn35).setVisibility(View.GONE);
127         view.findViewById(R.id.btn36).setVisibility(View.GONE);
128         view.findViewById(R.id.btn37).setVisibility(View.GONE);
129         view.findViewById(R.id.btn38).setVisibility(View.GONE);
130         view.findViewById(R.id.btn39).setVisibility(View.GONE);
131         view.findViewById(R.id.btn40).setVisibility(View.GONE);
132         view.findViewById(R.id.btn41).setVisibility(View.GONE);
133         
134         Log.d("dummy_arabic_input_onCreateCandidatesView", "invoked");
135         return view;
136     }
137 
138     @Override
139     public void onStartInputView(EditorInfo info, boolean restarting)
140     {
141         Log.d("dummy_arabic_input_onStartInputView", "invoked");
142         super.onStartInputView(info, restarting);
143     }
144 
145     @Override
146     public void onFinishInput()
147     {
148         Log.d("dummy_arabic_input_onFinishInput", "invoked");
149         super.onFinishInput();
150     }
151 
152     @Override
153     public void onDestroy()
154     {
155         Log.d("dummy_arabic_input_onDestroy", "invoked");
156         super.onDestroy();
157     }
158 
159     @Override
160     public void onClick(View view)
161     {
162         if (view.getId() == R.id.btn37)
163         {
164             getCurrentInputConnection().deleteSurroundingText(1, 0);
165             //InputConnection接口是用来给Activity传数据的渠道(channel)
166         }
167         else
168         {
169             Button button = (Button) view;
170             InputConnection inputConnection = getCurrentInputConnection();
171             
172             if (button.getId() != R.id.btn37)
173             {                        
174                 inputConnection.commitText(button.getText(), 1);
175             }
176         }
177     }
178 }
View Code

相关文章:

  • 2021-10-28
  • 2022-12-23
  • 2021-11-22
  • 2021-10-27
  • 2022-01-16
  • 2021-05-22
  • 2021-07-27
猜你喜欢
  • 2021-08-01
  • 2021-12-12
  • 2021-11-22
  • 2021-04-26
  • 2022-12-23
  • 2021-04-09
  • 2022-12-23
相关资源
相似解决方案