views:

20

answers:

0

I want to do something like andriod home screen effect. when i click the screen and move. the current view will move and next view also can show.

Now the code only can show the current view.

Thank you for your help

The source as follow:

public class test extends Activity implements OnTouchListener{

float downXValue;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set main.XML as the layout for this Activity
    setContentView(R.layout.main);

    // Add these two lines
    LinearLayout layMain = (LinearLayout) findViewById(R.id.layout_main);
    layMain.setOnTouchListener((OnTouchListener) this); 

    // Add a few countries to the spinner
    Spinner spinnerCountries = (Spinner) findViewById(R.id.spinner_country);
    ArrayAdapter countryArrayAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,new String[] { "Canada", "USA" });
    spinnerCountries.setAdapter(countryArrayAdapter);

}

public boolean onTouch(View arg0, MotionEvent arg1) {

    // Get the action that was done on this touch event
    switch (arg1.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        {
            // store the X value when the user's finger was pressed down
            downXValue = arg1.getX();
            break;
        }

        case MotionEvent.ACTION_UP:
        {
            // Get the X value when the user released his/her finger
            float currentX = arg1.getX();            

            // going backwards: pushing stuff to the right
            if (downXValue < currentX)
            {
                // Get a reference to the ViewFlipper
                 ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
                 // Set the animation
                  vf.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
                  // Flip!
                  vf.showPrevious();

            }

            // going forwards: pushing stuff to the left
            if (downXValue > currentX)
            {
                // Get a reference to the ViewFlipper
                ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
                 // Set the animation
                 vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
                  // Flip!
                 vf.showNext();
            }
            break;
        }
        case MotionEvent.ACTION_MOVE:
          ViewFlipper vf = (ViewFlipper) findViewById(R.id.details);
            final View currentView = vf.getCurrentView();
             currentView.layout((int)(arg1.getX() - downXValue), 
                   currentView.getTop(), currentView.getRight(), 
                    currentView.getBottom());
             /*may be do something in thest*/

        break;

    }

    // if you return false, these actions will not be recorded
    return true;
}

}