6. android manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" package="com.menulog.m">
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<activity
Application does not have the
android:name=".HomeActivity"
attribute 'debuggable' set to TRUE
android:label="@string/app_name"
in its manifest and cannot be
debugged. android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ListingActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
7. android manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" package="com.menulog.m">
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<activity
Application does not have the
android:name=".HomeActivity"
attribute 'debuggable' set to TRUE
android:label="@string/app_name"
in its manifest and cannot be
debugged. android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ListingActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
13. android manifest
• не забывайте добавлять тег <activity />
при создании нового класса Activity
• не забывайте указывать разрешения
<uses-permission /> для вашего
приложения
• будьте внимательны
16. layouts
• не забывайте определять атрибуты
layout_width, layout_height или
использовать стили
• не используйте AbsoluteLayout
• используйте dp (density pixels) и sp
(scalable pixels) вместо px
25. 9-patch images
without padding box
android:padding="0dp"
26. 9-patch images
without padding box
android:padding="0dp"
27. 9-patch images
• информация 9-patch располагается на
однопиксельной белой (#FFFF) или
прозрачной (#FFF0) рамке в виде рядов
черных (#000F) пикселей
• при масштабировании такого
изображения редактор может сглаживать
границы - появление серых пикселей
• ./tools/draw9patch неудобный
28. 9-patch images
android:padding="0dp"
• информация 9-patch располагается на
однопиксельной белой (#FFFF) или
прозрачной (#FFF0) рамке в виде рядов
черных (#000F) пикселей
• при масштабировании такого
изображения редактор может сглаживать
границы - появление серых пикселей
• ./tools/draw9patch неудобный
29. google maps
• для нормальной работы необходим Maps API key
• для этого нужно получить MD5 Fingerprint
сертификата вашего приложения
• и зарегистрировать MD5 Fingerprint в Google
Maps Service
• указать ключ при создании карты
mMapView = new MapView(this, "example_Maps_ApiKey_String");
30. слои google maps
• OverlayItem (точка)
• ItemizedOverlay (массив точек)
• Ваш собственный (extends Overlay)
• Координаты задаются в формате
(int) degree * 1e6
31. soft keyboard
• программный вызов работает в одном
Activity и не работает в другом (?)
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(mSearchField, InputMethodManager.SHOW_IMPLICIT);
• как узнать, что пользователь свернул
клавиатуру?
32. dialogs & menus
• программное управление multiple choice dialog (?)
• AlertDialog.Builder удобно
builder.setTitle(R.string.choose_country);
builder.setSingleChoiceItems(
countryNames,
index,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
}
});
dialog = builder.create();
33. dialogs & menus
• диалоги и меню кэшируются системой. чтобы
внести изменения в существующие объекты,
используются
onPrepareDilaog()
onPrepareOptionsMenu()
• видимость диалога управляется методами Activity
showDialog(int id)
dismissDialog(int id)
removeDialog(int id)
34. ресурсы
• мощный инструмент выбора ресурсов
основывается на различных критериях
• используется для локализации,
поддержки ориентации дисплея,
поддержки разных форматов дисплеев,
клавиатуры
36. ресурсы
• критерии должны разделяться символом ‘-’ и
следовать в порядке убывания приоритета
(приоритеты описаны в DevGuide)
• только одно значение критерия допускается в
названии: values-ru-en => values-ru, values-en
• обращайте внимание на именование файлов, в
частности для изображений:
res/drawable-mdpi/Untitled6.9.png: Invalid file name: must contain only
[a-z0-9_.]
38. emulator
• можно собрать устройство с любой
конфигурацией
• медленный
• отсутствуют настройки и описание
горячих клавиш
• Ctrl + F12 переключиться в landscape
режим
39. emulator
• устройства с hdpi дисплеем могут не
помещаться на экран
• масштаб эмулятора задается через AVD
Manager
40. emulator
• устройства с hdpi дисплеем могут не
помещаться на экран
• масштаб эмулятора задается через AVD
Manager
41. emulator
• устройства с hdpi дисплеем могут не
помещаться на экран
• масштаб эмулятора задается через AVD
Manager
42. литература
• http://developer.android.com (DevGuide,
Resources, Reference,Videos)
• Professoinal Android 2 Application Development
ISBN-13: 978-0-470-56552-0
• Google I/O Moblile Sessions
• Thinking In Java, 4th Edition ISBN 0-13-187248-6
• Effective Java, 2nd Edition ISBN-13:
978-0-321-35668-0, ISBN-10:
0-321-35668-3