Tworzenie aplikacji mobilnych
Android
IMF (Input Method Framework)
android:inputType
• text (domyślny)
• number
• phone
• datetime
• date
• time
<TextView android:text="No special rules:"/>
<EditText/>
…
<TextView android:text="Email address:"/>
<EditText
android:inputType="text|textEmailAddress"/>
…
<TextView android:text="Signed decimal number:"/>
<EditText
android:inputType="number|numberSigned|numberDecimal"/>
…
<TextView android:text="Date:"/>
<EditText
android:inputType="date"/>
<TextView android:text="Multi-line text:„ />
<EditText
android:inputType="text|textMultiLine|textAutoCorrect"
android:minLines="3"
android:gravity="top"/>
Akcje po wprowadzeniu danych
<EditText
android:inputType="text|textEmailAddress"
android:imeOptions="actionSend"
/>
…..
</TableRow>
<TableRow>
<TextView
android:text="Signed decimal number:" />
<EditText
android:inputType="number|numberSigned|numberDecimal"
android:imeOptions="actionDone"
/>
Obsługa akcji
• setOnEditorActionListener(new MyActionLisener() )
• Obsługa komunikatów przekazywanych za pomocą flag:
• IME_ACTION_SEND
Obsługa umieszczania IME na ekranie
• Umieszczenie IME nad layutem
• Zmiana rozmiaru Layout- u
Własna kontrola nad wprowadzaniem danych
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.imf.two" android:versionCode="1"
android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/cw">
<activity android:name=".IMEDemo2" android:label="@string/app_name"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<supports-screens android:largeScreens="true" android:normalScreens="true"
android:smallScreens="true" android:anyDensity="true"/>
</manifest>
Kontrola nad Wprowadzaniem danych (Ukrycie IME)
• InputMethodManager
mgr=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)
;
• mgr.hideSoftInputFromWindow(fld.getWindowToken(), 0);
• mgr.hideSoftInputFromWindow(
fld.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
Data Adapers
• Dostęp do danych
• Odpowiadają zarówno za dostęp do danych ja i za konwersje do odpowiednich obiektów
View
Przykład
(generacja w obiektach TextView)
•
String[] items={"this", "is", "a",
"really", "silly", "list"};
•
new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
Context
Layout
Kolekcja
Przykład:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/selection"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
Wykorzystanie ListAcivity
public class ListViewDemo extends ListActivity { private TextView selection;
private static final String[] items={"lorem", "ipsum", "dolor","sit", "amet", "consectetuer", "adipiscing", "elit", "morbi",
"vel", "ligula", "vitae", "arcu", "aliquet", "mollis", … };
@Override
public void onCreate(Bundle icicle) { super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
items));
selection=(TextView)findViewById(R.id.selection);
}
public void onListItemClick(ListView parent, View v, int position, long id) { selection.setText(items[position]);
} }
Wielokrotny wybór
• W kodzie:
setChoiceMode()
CHOICE_MODE_SINGLE CHOICE_MODE_MULTIPLE
• W xml:
android:choiceMode
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:choiceMode="multipleChoice"
/>
public class ChecklistDemo extends ListActivity {
private static final String[] items={"lorem", "ipsum", "dolor",
"sit", "amet", "};
@Override
public void onCreate(Bundle icicle) { super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, items));