2013-06-17 11 views
7

Ich versuche create animation genau wie in Google Chrome beim Öffnen von 2 oder mehr Tabs verwendet. Hier ist das Bild unten.google chrome animation effect in android

Wie könnte ich diesen Effekt wie in Google Chrome machen. Sie animierte wie SlidingDrawer (aber es ist kein slidingDrawer soweit ich weiß.)

enter image description here

+1

Hallo, tut mir leid, ich habe nichts hilfreich hinzuzufügen. Ich frage mich, ob Sie selbst Fortschritte dabei hatten? Ich versuche etwas sehr ähnliches zu machen und finde keine nützliche Information. – daesu

Antwort

2

Es ist nicht genau wie Google Chrom-Effekt, aber vielleicht hilfreich jemand in der Zukunft.

public class MyActivity extends Activity implements View.OnTouchListener { 

    ViewGroup _root; 
    private int _xDelta; 
    private int _yDelta; 
    LinearLayout relativeLayout1; 
    LinearLayout relativeLayout2; 
    LinearLayout relativeLayout3; 
    LinearLayout relativeLayout4; 
    LinearLayout relativeLayout5; 
    LinearLayout relativeLayout6; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main3); 

     _root = (ViewGroup)findViewById(R.id.root); 
     relativeLayout1 = new LinearLayout(this); 
     relativeLayout2 = new LinearLayout(this); 
     relativeLayout3 = new LinearLayout(this); 
     relativeLayout4 = new LinearLayout(this); 
     relativeLayout5 = new LinearLayout(this); 
     relativeLayout6 = new LinearLayout(this); 
     relativeLayout1.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout2.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout3.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout4.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout5.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout6.setOrientation(LinearLayout.VERTICAL); 
     relativeLayout1.setId(1); 
     relativeLayout2.setId(2); 
     relativeLayout3.setId(3); 
     relativeLayout4.setId(4); 
     relativeLayout5.setId(5); 
     relativeLayout6.setId(6); 

     relativeLayout1.setBackgroundColor(Color.RED); 

     relativeLayout2.setBackgroundColor(Color.BLUE); 

     relativeLayout3.setBackgroundColor(Color.GREEN); 

     relativeLayout4.setBackgroundColor(Color.GRAY); 

     relativeLayout5.setBackgroundColor(Color.CYAN); 

     relativeLayout6.setBackgroundColor(Color.DKGRAY); 

     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 300); 
     relativeLayout1.setLayoutParams(layoutParams); 
     _root.addView(relativeLayout1); 

     RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 300); 

//  relativeLayout1.setOnTouchListener(this); // first element have to stay fixed 
     relativeLayout2.setOnTouchListener(this); 
     relativeLayout3.setOnTouchListener(this); 
     relativeLayout4.setOnTouchListener(this); 
     relativeLayout5.setOnTouchListener(this); 
     relativeLayout6.setOnTouchListener(this); 

     relativeLayout2.setLayoutParams(layoutParams1); 
     relativeLayout3.setLayoutParams(layoutParams1); 
     relativeLayout4.setLayoutParams(layoutParams1); 
     relativeLayout5.setLayoutParams(layoutParams1); 
     relativeLayout6.setLayoutParams(layoutParams1); 

     _root.addView(relativeLayout2); 
     _root.addView(relativeLayout3); 
     _root.addView(relativeLayout4); 
     _root.addView(relativeLayout5); 
     _root.addView(relativeLayout6); 
    } 

    public boolean onTouch(View view, MotionEvent event) { 
     final int X = (int) event.getRawX(); 
     final int Y = (int) event.getRawY(); 
     switch (event.getAction() & MotionEvent.ACTION_MASK) { 
      case MotionEvent.ACTION_DOWN: 
       LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) view.getLayoutParams(); 
//    _xDelta = X - lParams.leftMargin; 
       _yDelta = Y - lParams.topMargin; 
//    System.out.println("getRawY"+(int)event.getRawY()); 
       System.out.println("DOWN=="+_yDelta); 
       System.out.println("view height=="+ view.getHeight()); 
       System.out.println("root view="+_root.getHeight()); 

       break; 
      case MotionEvent.ACTION_UP: 
       System.out.println("getRawY="+(int)event.getRawY()); 
       break; 
      case MotionEvent.ACTION_POINTER_DOWN: 
       break; 
      case MotionEvent.ACTION_POINTER_UP: 
       break; 
      case MotionEvent.ACTION_MOVE: 
       System.out.println("getRawYMOVE="+(int)event.getRawY()); 
       LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams(); 
//    layoutParams.leftMargin = X - _xDelta; 
       int dif = Y - _yDelta; 
       if (view.getHeight() + (dif) > 30){ 
        if (dif < 0 && Math.abs(dif) >= view.getHeight()/5){ 
          layoutParams.topMargin = dif; 
          view.setLayoutParams(layoutParams); 
        } else if (dif <= 0 && dif < view.getHeight()/5){ 
         layoutParams.topMargin = dif; 
         view.setLayoutParams(layoutParams); 
        } 

        View p_view = findViewById(view.getId() - 1); 
        if (p_view.getId() != 1){ 

         p_view.setLayoutParams(layoutParams); 
        } 
       } 

       break; 
     } 
     _root.invalidate(); 
     return true; 
    } 

}