How can i make a dynamic flipping screen(like that of iPhone) in Android

27,326

Solution 1

You can add pages to a ViewFlipper dynamically using addView.

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

Where myView is the view you wish to add, and myViewIndex is the index in the viewflipper you want to add this new view.

You can then set the animations to preform on changing of views:

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

Then to flip to this page you can use:

  flipper.setDisplayedChild(myViewIndex);

Where left_in.xml is defined as

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

and left_out.xml is:

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

Solution 2

Just had a quick look for you because I was sure I've seen it around before, I found this on 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 you can add this extra parameter to your intent which will define how the activity you call will animate on entrance of new activity and exit of old activity.

Solution 3

If you want to navigate between two activities and not use a view flipper you can use normal intents. Wrote a tutorial so that you can animate your activity's in and out,

Enjoy:

http://blog.blundellapps.co.uk/animate-an-activity/

Share:
27,326
Muhammad Maqsoodur Rehman
Author by

Muhammad Maqsoodur Rehman

In brief, I have experience in both technical and business domains and like to seek a challenging professional role that utilizes both technical and communication skills. Understanding and being curious about business processes, domains and effectively collaborating with major stakeholders are my professional traits and I have always been passionate about being a keen problem solver. I simply believe that no software solution can be engineered without proper business analysis and project management and therefore I pursue to grow further in these valuable areas as well. As a technology consultant and tech evangelist, I am familiar with latest and trending technologies and business possesses and help businesses to succeed. Being an avid lifelong self-learner, I have a firm belief that hard skills and soft skills, both go hand in hand. Here are some of the core soft skills that are my fortes: Technology Consulting Business Analysis Software Usability Review Project Management Problem Solving Sales &amp; Negotiation Customer Support Note: I am also flexible to relocate myself geographically anywhere in the world. Contact Details: Email: [email protected] WhatsApp: +92 332 7999 729

Updated on July 09, 2022

Comments

  • Muhammad Maqsoodur Rehman
    Muhammad Maqsoodur Rehman almost 2 years

    I am parsing data through the web service. I want the flipping horizontally rather than vertically. Here is a tutorial where ViewFlipper is used but it is for static data.


    Here is our code where we need flipping between 2 activities:

    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>