2016-07-01 192 views
1

我用這個代碼在android系統的工作完美 問題動畫視圖當我設置保證金爲零或裕度的電流餘量其不動畫動畫利潤率變化

代碼

  int margin = 100; 


      ValueAnimator varl = ValueAnimator.ofInt(margin); 
      varl.setDuration(200); 
      varl.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

       @Override 
       public void onAnimationUpdate(ValueAnimator animation) { 
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) myView.getLayoutParams(); 
        lp.setMargins((Integer) animation.getAnimatedValue(), 0, 0, 0); 
        myView.setLayoutParams(lp); 
       } 
      }); 
      varl.start(); 

現在,當我設置保證金100是動畫,但是當我想設置它沒有動畫爲零其設置的空白

int margin = 0; 



      ValueAnimator varl = ValueAnimator.ofInt(margin); 
      varl.setDuration(200); 
      varl.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

       @Override 
       public void onAnimationUpdate(ValueAnimator animation) { 
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) myView.getLayoutParams(); 
        lp.setMargins((Integer) animation.getAnimatedValue(), 0, 0, 0); 
        myView.setLayoutParams(lp); 
       } 
      }); 
      varl.start(); 

回答

2

的問題是,你沒有使用ValueAnimator.ofInt(int... values);正確:你應該明確地告訴動畫師哪個哪個值它應該動畫。因此,例如,您應該從當前值創建動畫到想要的值。如果您以前的值,是,例如,,那麼該語句應該是這樣的:

ValueAnimator varl = ValueAnimator.ofInt(50, margin);

+0

謝謝你的工作: D – medo

+0

@medo好的,您可以將答案標記爲「已接受」,以便我們知道此問題已解決。我很高興能夠幫助你。 –

+0

當然,我只是等待完成5分鐘,我標記了它 – medo

1

你可以用我library爲:

ViewPropertyObjectAnimator.animate(myView).leftMargin(100).setDuration(200).start();