Android. Простое переключение между Activity

За основу брал этот пример:
http://habrahabr.ru/blogs/android_development/118482/

Сначала создадим файл xml с flipper:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ViewFlipper 
        android:id="@+id/flipper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>  
</LinearLayout>

После этого создаем необходимое количество xml с View:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:color/white"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:text="1"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="140px"
        android:textStyle="bold"/>
</RelativeLayout>

После этого перепишем код OnCreate с небольшими изменениями, поскольку предполагается, что переключение между окнами будет происходить по нажатию кнопки:

public class hon extends Activity implements View.OnClickListener {

...

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Устанавливаем listener касаний, для последующего перехвата жестов
    LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
    mainLayout.setOnClickListener(this);

    // Получаем объект ViewFlipper
    flipper = (ViewFlipper) findViewById(R.id.flipper);

    // Создаем View и добавляем их в уже готовый flipper
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    int layouts[] = new int[]{ R.layout.first, R.layout.second, R.layout.third, R.layout.fourth };
    for (int layout : layouts)
        flipper.addView(inflater.inflate(layout, null));
}

...

}

Изменения:
public class hon extends Activity implements View.OnClickListener
mainLayout.setOnClickListener(this);

Для того, чтобы в программе можно было вернуться в предыдущее окно, добавим следующий код в Activity:

/**
     * Кнопка escape должна выполнять возврат в предыдущее меню, а не вызывать выход из
     * программы.
     */
	@Override
    public boolean onKeyDown(int keyCode, KeyEvent msg) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
        	View view = flipper.getCurrentView();
        	if(view == flipper.getChildAt(0))
        		return super.onKeyDown(keyCode, msg);
        	flipper.showPrevious();
            return true;
        }
        return super.onKeyDown(keyCode, msg);
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *