2010-04-19 8 views
6

Ich Parsing Daten über den Web-Service. Ich möchte das Spiegeln horizontal anstatt vertikal. Hier ist ein Tutorial, in dem ViewFlipper verwendet wird, aber für statische Daten.Wie kann ich eine dynamische spiegeln Bildschirm (wie das iPhone) in Android


Hier ist unser Code, wo wir zwischen zwei Aktivitäten müssen Spiegeln:

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> 
+2

Was meinen Sie: "Hier ist ein Tutorial, in dem ViewFlipper verwendet wird"? –

+0

überprüfen Sie diese [Antwort] (http://stackoverflow.com/questions/2651360/how-to-provide-animation-when-calling-another-activity-in-android/2651890#2651890) – Praveen

Antwort

18

-Datei Sie können Seiten hinzufügen zu einem ViewFlipper mit addView dynamisch.

flipper= (ViewFlipper) findViewById(R.id.flipper1); 
    flipper.addView(myView,myViewIndex); 

Wo myView ist die Ansicht, die Sie hinzufügen möchten, und myViewIndex ist der Index in der viewflipper Sie diese neue Ansicht hinzufügen möchten.

Anschließend können Sie die Animationen setzen auf die Veränderung der Ansichten Preform:

flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); 
    flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); 

dann auf diese Seite kippen können Sie:

flipper.setDisplayedChild(myViewIndex); 

Wo left_in.xml als

definiert
<?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> 

und left_out.xml ist:

<?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> 
+0

Angenommen, wir haben 2 Aktivitäten mit ihren jeweiligen XML-Dateien: Splash Activity -> splash.xml > menu.xml Wie können wir nun zwischen diesen beiden Aktivitäten wechseln? Das ist von Splash zu Menu und umgekehrt. –

+0

Wir werden, wenn sie zwei verschiedene Aktivitäten sind, dann ist dies eine ganz andere Frage, da Sie ViewFlipper nicht verwenden werden. Wenn es sich nur um zwei verschiedene Ansichten handelt, die in XML definiert sind, fügen Sie sie einfach dem viewflipper hinzu und verwenden setDisplayedChild, um zwischen ihnen zu wechseln. – stealthcopter

+0

Ich sehe! So ist es möglich, iPhone wie zwischen zwei verschiedenen Aktivitäten in Android spiegeln. Können Sie bitte den erforderlichen Code im Hinblick auf das obige Szenario posten? Weil dies etwas ist, was wir zum ersten Mal tun. –

-4

Wollen Sie nur der Bildschirm aus der Position der Basis drehen es in gehalten wird (wie durch die Beschleunigungs-Sensoren bestimmt wird)?

Wenn so fügen Sie einfach

android:screenOrientation="sensor" 

zum Aktivitätsknoten in AndroidManifest.xml

+0

Nichts mit Beschleunigungsmesser zu tun. Ich möchte, dass meine Seite/Bildschirm wie beim iPhone umgedreht wird. –

+0

Also fragst du nach einer Flip-Animation? Mein iPhone-Erlebnis ist begrenzt, so dass es mir nicht ganz klar ist, wenn du sagst: "Flip wie auf dem iPhone" Entschuldigung – snctln

3

nur einen kurzen Blick für Sie hatte, weil ich sicher war, dass ich es um zuvor gesehen habe, fand ich this auf 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. 

So können Sie diese zusätzlichen Parameter hinzufügen Ihren Absicht, die definiert, wie die Aktivität, die Sie aufrufen, beim Eintritt einer neuen Aktivität und beim Verlassen einer alten Aktivität animiert wird.

+0

richtig und funktioniert wie ein Charme .. mehr kann unter http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Animation.html eine wichtige Sache gefunden werden. Diese Methode wird in API Level 5 und höher unterstützt, wie auch von stealthcopter erwähnt. –