Android: горизонтальная прокрутка с тремя линейными макетами - PullRequest
6 голосов
/ 19 апреля 2011

Я хочу создать мероприятие с горизонтальной прокруткой.Содержимое просмотра прокрутки будет трех разных линейных разметок.Каждая из этих линейных разметок должна занимать всю ширину экрана устройства.Таким образом, когда начинается действие, только одна линейная задержка занимает всю ширину экрана, а когда пользователь проведет пальцем вправо, другая линейная задержка отобразится во всю ширину.(см. рисунок)

Я не уверен, как установить ширину линейных разметок, чтобы они соответствовали ширине экрана.Любые идеи о том, как решить эту проблему хорошим способом?

This is what I need

1 Ответ

9 голосов
/ 19 апреля 2011

Я думаю, что вы должны использовать ViewFlipper вместо scrollView.используйте сенсорное событие в видоискателе для навигации и используйте анимацию для переключения двух линейных макетов.

этот пример поможет вам Пример просмотра Flipper

Отредактировано:

steps:

  • есть ViewFlipper, который содержит layout1, layout2, layoout3
  • в настоящее время layout1 виден.
  • перемещается справа налево для отображения следующего макета.layout1 -> layout2

анимация будет применена здесь для обоих видов (layout1 и layout2).

  • для layout2 -> push_right_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="100%" android:toXDelta="0%"
        android:duration="400" />
    </set>
    
  • для layout1 -> push_right_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="-100%"
        android:duration="400" />
    
    </set>
    
  • , затем установите эту анимацию для потомка viewflipper.

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out);
    flipper.showNext();
    
    • теперь перебрасывается слева направо для отображения предыдущего макета.layout2 -> layout1

анимация будет применена здесь для обоих видов (layout1 и layout2).

  • для layout1 ->push_left_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="-100%" android:toXDelta="0%"
    android:duration="400" />
    </set>
    
  • для layout2 -> push_left_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="100%"
    android:duration="400" />
    
    </set>
    
  • , затем установите эту анимацию для потомка viewflipper.

    flipper.setInAnimation(<your class>.this, R.anim.push_left_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_left_out);
    flipper.showPrevious();
    

это даст вам плавную анимацию.

...