2013-06-17 26 views
7

2 veya daha fazla sekme açarken google chrome'da kullanıldığı gibi animasyon oluşturmaya çalışıyorum. İşte aşağıdaki resim.Android'de google chrome animasyonu etkisi

Bu efekti Google Chrome'da olduğu gibi nasıl yapabilirim? Onlar SlidingDrawer gibi animasyon (ama o kadar bildiğim kadarıyla bir SlidingDrawer değildir.)

enter image description here

+1

Merhaba, üzgünüm eklemek için yararlı bir şeyim yok. Bu konuda kendin bir gelişme olup olmadığını merak ediyorum? Çok benzer bir şey yapmaya çalışıyorum ve herhangi bir yararlı bilgi bulamıyorum. – daesu

cevap

2

Google'ın krom etkisi ancak gelecekte belki yararlı birisi olarak tam değildir.

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; 
    } 

}