Я анализирую данные через веб-сервис. Я хочу зеркальное отражение горизонтально, а не вертикально. Вот учебное руководство, где ViewFlipper используется, но это для статических данных.
Вот наш код, где нам нужно зеркальное отражение между 2 операциями:
Splash.java
public class Splash extends Activity{
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startActivity(new Intent(Splash.this, MainMenu.class));
Splash.this.finish();
}
}
Splash.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/splash">
</AbsoluteLayout>
Menu.java
public class Menu extends Activity{
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
}
}
Menu.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/menu">
</AbsoluteLayout>
Вы можете динамически добавлять страницы в ViewFlipper с помощью addView.
flipper= (ViewFlipper) findViewById(R.id.flipper1);
flipper.addView(myView,myViewIndex);
Где myView - это представление, которое вы хотите добавить, а myViewIndex - это индекс в окне просмотра, в котором вы хотите добавить это новое представление.
Затем вы можете настроить анимацию на предварительную форму при изменении представлений:
flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out));
Затем для перехода на эту страницу вы можете использовать:
flipper.setDisplayedChild(myViewIndex);
Где left_in.xml определен как
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="300"
/>
</set>
, а left_out.xml равен:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
>
<translate
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="300"
/>
</set>
Вы просто хотите, чтобы экран вращался в зависимости от положения, в котором он удерживается (как определено датчиками акселерометра)?
Если да, просто добавьте
android:screenOrientation="sensor"
в узел "Действия" в файле AndroidManifest.xml
Просто быстро вас поискал, потому что я был уверен, что видел это раньше, я нашел это на сайте developer.android.com:
public void overridePendingTransition (int enterAnim, int exitAnim)
Since: API Level 5
Call immediately after one of the flavors of startActivity(Intent) or finish() to specify an explicit transition animation to perform next.
Parameters
enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
exitAnim A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.
Вы можете добавить этот дополнительный параметр к своему намерению, который будет определять, как вызываемая вами активность будет анимироваться при входе в новую активность и выходе из старой активности.