• 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

    src/com.example.dummy_arabic_input/InputSetting.java

    1 InputSetting.java
    View Code

    res/layout/input_setting.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="horizontal" >
     6 
     7     <TextView
     8         android:id="@+id/textview"
     9         android:layout_width="wrap_content"
    10         android:layout_height="wrap_content"
    11         android:text="输入法设置窗口" />
    12 
    13 </LinearLayout>
    View Code

    res/layout/arabic_keyboard.xml

      1 <?xml version="1.0" encoding="utf-8"?>
      2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      3     android:layout_width="fill_parent"
      4     android:layout_height="wrap_content"
      5     android:background="#F2F2F2"
      6     android:gravity="bottom"
      7     android:orientation="vertical" >
      8 
      9     <LinearLayout
     10         android:layout_width="fill_parent"
     11         android:layout_height="40.0dip"
     12         android:orientation="horizontal" >
     13 
     14         <Button
     15             android:id="@+id/btn1"
     16             android:layout_width="fill_parent"
     17             android:layout_height="fill_parent"
     18             android:layout_weight="1.0"
     19             android:background="@drawable/blank"
     20             android:text="ب" />
     21 
     22         <Button
     23             android:id="@+id/btn2"
     24             android:layout_width="fill_parent"
     25             android:layout_height="fill_parent"
     26             android:layout_weight="1.0"
     27             android:background="@drawable/blank"
     28             android:text="إ" />
     29 
     30         <Button
     31             android:id="@+id/btn3"
     32             android:layout_width="fill_parent"
     33             android:layout_height="fill_parent"
     34             android:layout_weight="1.0"
     35             android:background="@drawable/blank"
     36             android:text="آ" />
     37 
     38         <Button
     39             android:id="@+id/btn4"
     40             android:layout_width="fill_parent"
     41             android:layout_height="fill_parent"
     42             android:layout_weight="1.0"
     43             android:background="@drawable/blank"
     44             android:text="أ" />
     45 
     46         <Button
     47             android:id="@+id/btn5"
     48             android:layout_width="fill_parent"
     49             android:layout_height="fill_parent"
     50             android:layout_weight="1.0"
     51             android:background="@drawable/blank"
     52             android:text="ا" />
     53 
     54         <Button
     55             android:id="@+id/btn6"
     56             android:layout_width="fill_parent"
     57             android:layout_height="fill_parent"
     58             android:layout_weight="1.0"
     59             android:background="@drawable/blank"
     60             android:text="ء" />
     61     </LinearLayout>
     62 
     63     <LinearLayout
     64         android:layout_width="fill_parent"
     65         android:layout_height="40.0dip"
     66         android:orientation="horizontal" >
     67 
     68         <Button
     69             android:id="@+id/btn7"
     70             android:layout_width="fill_parent"
     71             android:layout_height="fill_parent"
     72             android:layout_weight="1.0"
     73             android:background="@drawable/blank"
     74             android:text="خ" />
     75 
     76         <Button
     77             android:id="@+id/btn8"
     78             android:layout_width="fill_parent"
     79             android:layout_height="fill_parent"
     80             android:layout_weight="1.0"
     81             android:background="@drawable/blank"
     82             android:text="ح" />
     83 
     84         <Button
     85             android:id="@+id/btn9"
     86             android:layout_width="fill_parent"
     87             android:layout_height="fill_parent"
     88             android:layout_weight="1.0"
     89             android:background="@drawable/blank"
     90             android:text="ج" />
     91 
     92         <Button
     93             android:id="@+id/btn10"
     94             android:layout_width="fill_parent"
     95             android:layout_height="fill_parent"
     96             android:layout_weight="1.0"
     97             android:background="@drawable/blank"
     98             android:text="ث" />
     99 
    100         <Button
    101             android:id="@+id/btn11"
    102             android:layout_width="fill_parent"
    103             android:layout_height="fill_parent"
    104             android:layout_weight="1.0"
    105             android:background="@drawable/blank"
    106             android:text="ة" />
    107 
    108         <Button
    109             android:id="@+id/btn12"
    110             android:layout_width="fill_parent"
    111             android:layout_height="fill_parent"
    112             android:layout_weight="1.0"
    113             android:background="@drawable/blank"
    114             android:text="ت" />
    115     </LinearLayout>
    116 
    117     <LinearLayout
    118         android:layout_width="fill_parent"
    119         android:layout_height="40.0dip"
    120         android:orientation="horizontal" >
    121 
    122         <Button
    123             android:id="@+id/btn13"
    124             android:layout_width="fill_parent"
    125             android:layout_height="fill_parent"
    126             android:layout_weight="1.0"
    127             android:background="@drawable/blank"
    128             android:text="ش" />
    129 
    130         <Button
    131             android:id="@+id/btn14"
    132             android:layout_width="fill_parent"
    133             android:layout_height="fill_parent"
    134             android:layout_weight="1.0"
    135             android:background="@drawable/blank"
    136             android:text="س" />
    137 
    138         <Button
    139             android:id="@+id/btn15"
    140             android:layout_width="fill_parent"
    141             android:layout_height="fill_parent"
    142             android:layout_weight="1.0"
    143             android:background="@drawable/blank"
    144             android:text="ز" />
    145 
    146         <Button
    147             android:id="@+id/btn16"
    148             android:layout_width="fill_parent"
    149             android:layout_height="fill_parent"
    150             android:layout_weight="1.0"
    151             android:background="@drawable/blank"
    152             android:text="ر" />
    153 
    154         <Button
    155             android:id="@+id/btn17"
    156             android:layout_width="fill_parent"
    157             android:layout_height="fill_parent"
    158             android:layout_weight="1.0"
    159             android:background="@drawable/blank"
    160             android:text="ذ" />
    161 
    162         <Button
    163             android:id="@+id/btn18"
    164             android:layout_width="fill_parent"
    165             android:layout_height="fill_parent"
    166             android:layout_weight="1.0"
    167             android:background="@drawable/blank"
    168             android:text="د" />
    169     </LinearLayout>
    170 
    171     <LinearLayout
    172         android:layout_width="fill_parent"
    173         android:layout_height="40.0dip"
    174         android:orientation="horizontal" >
    175 
    176         <Button
    177             android:id="@+id/btn19"
    178             android:layout_width="fill_parent"
    179             android:layout_height="fill_parent"
    180             android:layout_weight="1.0"
    181             android:background="@drawable/blank"
    182             android:text="غ" />
    183 
    184         <Button
    185             android:id="@+id/btn20"
    186             android:layout_width="fill_parent"
    187             android:layout_height="fill_parent"
    188             android:layout_weight="1.0"
    189             android:background="@drawable/blank"
    190             android:text="ع" />
    191 
    192         <Button
    193             android:id="@+id/btn21"
    194             android:layout_width="fill_parent"
    195             android:layout_height="fill_parent"
    196             android:layout_weight="1.0"
    197             android:background="@drawable/blank"
    198             android:text="ظ" />
    199 
    200         <Button
    201             android:id="@+id/btn22"
    202             android:layout_width="fill_parent"
    203             android:layout_height="fill_parent"
    204             android:layout_weight="1.0"
    205             android:background="@drawable/blank"
    206             android:text="ط" />
    207 
    208         <Button
    209             android:id="@+id/btn23"
    210             android:layout_width="fill_parent"
    211             android:layout_height="fill_parent"
    212             android:layout_weight="1.0"
    213             android:background="@drawable/blank"
    214             android:text="ض" />
    215 
    216         <Button
    217             android:id="@+id/btn24"
    218             android:layout_width="fill_parent"
    219             android:layout_height="fill_parent"
    220             android:layout_weight="1.0"
    221             android:background="@drawable/blank"
    222             android:text="ص" />
    223     </LinearLayout>
    224 
    225     <LinearLayout
    226         android:layout_width="fill_parent"
    227         android:layout_height="40.0dip"
    228         android:orientation="horizontal" >
    229 
    230         <Button
    231             android:id="@+id/btn25"
    232             android:layout_width="fill_parent"
    233             android:layout_height="fill_parent"
    234             android:layout_weight="1.0"
    235             android:background="@drawable/blank"
    236             android:text="ن" />
    237 
    238         <Button
    239             android:id="@+id/btn26"
    240             android:layout_width="fill_parent"
    241             android:layout_height="fill_parent"
    242             android:layout_weight="1.0"
    243             android:background="@drawable/blank"
    244             android:text="م" />
    245 
    246         <Button
    247             android:id="@+id/btn27"
    248             android:layout_width="fill_parent"
    249             android:layout_height="fill_parent"
    250             android:layout_weight="1.0"
    251             android:background="@drawable/blank"
    252             android:text="ل" />
    253 
    254         <Button
    255             android:id="@+id/btn28"
    256             android:layout_width="fill_parent"
    257             android:layout_height="fill_parent"
    258             android:layout_weight="1.0"
    259             android:background="@drawable/blank"
    260             android:text="ك" />
    261 
    262         <Button
    263             android:id="@+id/btn29"
    264             android:layout_width="fill_parent"
    265             android:layout_height="fill_parent"
    266             android:layout_weight="1.0"
    267             android:background="@drawable/blank"
    268             android:text="ق" />
    269 
    270         <Button
    271             android:id="@+id/btn30"
    272             android:layout_width="fill_parent"
    273             android:layout_height="fill_parent"
    274             android:layout_weight="1.0"
    275             android:background="@drawable/blank"
    276             android:text="ف" />
    277     </LinearLayout>
    278 
    279     <LinearLayout
    280         android:layout_width="fill_parent"
    281         android:layout_height="40.0dip"
    282         android:orientation="horizontal" >
    283 
    284         <Button
    285             android:id="@+id/btn31"
    286             android:layout_width="fill_parent"
    287             android:layout_height="fill_parent"
    288             android:layout_weight="1.0"
    289             android:background="@drawable/blank"
    290             android:text="ئ" />
    291 
    292         <Button
    293             android:id="@+id/btn32"
    294             android:layout_width="fill_parent"
    295             android:layout_height="fill_parent"
    296             android:layout_weight="1.0"
    297             android:background="@drawable/blank"
    298             android:text="ى" />
    299 
    300         <Button
    301             android:id="@+id/btn33"
    302             android:layout_width="fill_parent"
    303             android:layout_height="fill_parent"
    304             android:layout_weight="1.0"
    305             android:background="@drawable/blank"
    306             android:text="ي" />
    307 
    308         <Button
    309             android:id="@+id/btn34"
    310             android:layout_width="fill_parent"
    311             android:layout_height="fill_parent"
    312             android:layout_weight="1.0"
    313             android:background="@drawable/blank"
    314             android:text="ؤ" />
    315 
    316         <Button
    317             android:id="@+id/btn35"
    318             android:layout_width="fill_parent"
    319             android:layout_height="fill_parent"
    320             android:layout_weight="1.0"
    321             android:background="@drawable/blank"
    322             android:text="و" />
    323 
    324         <Button
    325             android:id="@+id/btn36"
    326             android:layout_width="fill_parent"
    327             android:layout_height="fill_parent"
    328             android:layout_weight="1.0"
    329             android:background="@drawable/blank"
    330             android:text="ه" />
    331     </LinearLayout>
    332 
    333     <LinearLayout
    334         android:layout_width="fill_parent"
    335         android:layout_height="40.0dip"
    336         android:orientation="horizontal" >
    337 
    338         <Button
    339             android:id="@+id/btn37"
    340             android:layout_width="0dp"
    341             android:layout_height="fill_parent"
    342             android:layout_weight="1.0"
    343             android:background="@drawable/delete" />
    344             
    345         <Button
    346             android:id="@+id/btn38"
    347             android:layout_width="0dp"      
    348             android:layout_height="fill_parent"
    349             android:layout_weight="1.0"
    350             android:background="@drawable/enter"
    351             android:text="
    " />
    352 
    353         <Button
    354             android:id="@+id/btn39"
    355             android:layout_width="0dp"       
    356             android:layout_height="fill_parent"
    357             android:layout_weight="2.0"
    358             android:background="@drawable/blank"
    359             android:text=" " />
    360 
    361         <Button
    362             android:id="@+id/btn40"
    363             android:layout_width="0dp"            
    364             android:layout_height="fill_parent"
    365             android:layout_weight="1.0"
    366             android:background="@drawable/blank"
    367             android:text="." />
    368 
    369         <Button
    370             android:id="@+id/btn41"
    371             android:layout_width="0dp"            
    372             android:layout_height="fill_parent"
    373             android:layout_weight="1.0"
    374             android:background="@drawable/blank"
    375             android:text="،" />
    376 
    377     </LinearLayout>
    378 
    379 </LinearLayout>
    View Code

    六、效果显示

  • 相关阅读:
    单位
    北京户口
    中科院助理工程师
    SQL学习
    question
    ROI选取过程
    IT学习网站
    撞库 拖库
    善用人类记忆的特点去高效学习
    为什么散步对健康很有益处
  • 原文地址:https://www.cnblogs.com/ArrozZhu/p/8388144.html
Copyright © 2020-2023  润新知