Android Development Course in HSE lecture #3

Post on 13-May-2015

446 views 0 download

Tags:

description

Activity Lifecycle, Views, Layouts

transcript

Lecture #3

Logs

● Log.i(tag, msg); (information)● Log.v(tag, msg); (verbose)● Log.d(tag, msg); (debug)● Log.w(tag, msg); (warning)● Log.e(tag, msg); (error)

Log.i("my_log_tag", "gotcha!");

public class MyActivity extends Activity {

@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.my_layout);}

}

Declaring "launcher" Activity

<activity android:name=".MyActivity" >

<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>

Declaring new Activities

<activityandroid:name=".AnotherActivity">

</activity>

НЕ ЗАБЫВАЙТЕ!

Starting new Activity

Intent i = new Intent(context, NextActivity.class);startActivity(intent);

context:

● this

● MyActivity.this

● getApplicationContext()

Activity states

● Resumed ("running")● Paused● Stopped

Lifecycle methods

● onCreate()● onRestart()● onStart()● onResume()● onPause()● onStop()● onDestroy()

Starting an Activity

● setContentView(R.layout.my_layout);● подготовка пользовательского

интерфейса● инициализация переменных класса (если

нужно)● вызывается единожды за жизненный

цикл Activity● не выполняйте "тяжелых" задач в

onCreate()

Pausing and Resuming an Activity

● Остановить анимации, звук, видео и т.д.● Сохранить состояние экрана (light auto-

save only)● Очистить системные ресурсы (broadcast

receivers, handlers to sensors (like GPS), camera, ...)

● не выполняйте "тяжелых" задач в onPause()

● В onResume(), наоборот, все восстанавливается (не забывайте, что вызывается каждый раз)

Stopping and Restarting an Activity

● Максимально очистить все ресурсы● Сохранить состояние экрана (heavy

operations)● В onStart(), наоборот, все

восстанавливается (не забывайте, что вызывается каждый раз)

Recreating an Activity

● onSaveInstanceState(Bundle savedInstanceState)● onRestoreInstanceState(Bundle savedInstanceState)● onCreate(Bundle savedInstanceState)

● onDestroy()● onRestart()

github repo @Override protected void onPause() { super.onPause(); Log.i("fsq", "onPause 1st"); }

НЕ ЗАБЫВАЙТЕ ВЫЗЫВАТЬ SUPER!

LayoutParams

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:layout_width="100dip" android:layout_height="100dip"

padding and layout_margin

● android:padding="5dip"● android:paddingRight="5dip"● android:layout_margin="5dip"● android:layout_marginRight="5dip"

dp or dip

TextView

● android:text="@string/text"● android:textColor="@android:color/black"● android:textStyle="italic|bold"● android:textSize="14sp"

sp

Button button = (Button) findViewById(R.id.button_send);button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) { // Do something in response to button click }});

● button.setOnClickListener(this)● button.setOnClickListener(myClickListener)● android:onClick="clickMethod"

switch (v.getId()) {case R.id.button1:

//break;

case R.id.button2://break;

}

EditText

● editText.getText();● android:inputType="textEmailAddress"● OnEditorActionListener ● OnTextChangedListener

RelativeLayout

● android:layout_alignParentLeft="true"

● android:layout_centerVertical="true"● android:layout_toRightOf="@+id/id"● android:layout_below="@+id/id"

gravity

● android:gravity="center"● android:layout_gravity="center_horizontal|right"

Resources for multiple screens

● drawable● drawable-xhdpi● drawable-hdpi● drawable-mdpi● layout● layout-land

External jars Хранить в папке libs!

Homework

● Activity Lifecycle● Views and Layouts