2014-12-19 151 views
1

我是新來的Android動畫,並且很難理解爲什麼下面的代碼沒有給出預期的結果。 我想有從位置屏幕之外滑動後置於絕對位置(0,100)按鈕:TranslateAnimation沒有給出預期的結果

Button gift = new Button(this); 

    gift.setBackgroundColor(Color.BLACK); 
    gift.setTextColor(Color.GREEN); 

    gift.setGravity(Gravity.CENTER);; 

    gift.setTextSize(18); 

    gift.setText(NSLocalizedString("BONUS!\nYou Found A Solution\nAnd I Didn't!\n")); 

    int from []= new int [2]; 
    from[0]=-500;from[1]=100; 

    int to []= new int [2]; 
    to[0]=0;to[1]=100; 

    RelativeLayout journals = (RelativeLayout) findViewById(R.id.main); 
    journals.addView(gift); 

    TranslateAnimation animation = new TranslateAnimation(
      Animation.ABSOLUTE, from[0], 
      Animation.ABSOLUTE, from[1], 
      Animation.ABSOLUTE, to[0], 
      Animation.ABSOLUTE, to[1] 
      ); 
    animation.setDuration(5000); // duartion in ms 
    animation.setFillAfter(true); 

    gift.startAnimation(animation); 

enter image description here

+0

你確定你的相對佈局是0,0,我認爲相對佈局也d命令一些佈局參數,嘗試線性佈局 – DroidDev

+0

有什麼問題?我只能從上面猜測,也許按鈕不可點擊,這是因爲您正在使用視圖動畫,實際上並沒有移動按鈕,只是在它的繪製位置。你應該嘗試一個屬性動畫。 – Whitney

+0

我的活動使用RelativeLayout。 該按鈕會移動並停在屏幕截圖所示的位置。 我想停止在(0,100)。我能做什麼? – michaelsmith

回答

0

首先,在您的佈局xml文件,將按鈕使用RelativeLayout中的AbsoluteLayout(使用示例:http://www.tutorialspoint.com/android/android_absolute_layout.htm),根據您的要求的位置(0,100)。

然後,將按鈕的可見性設置爲「不存在」作爲佈局xml中按鈕的屬性。

現在,請執行下列操作:

添加文件在你的動畫資源文件夾,命名爲slide_left.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
    android:fillAfter="false" 
    android:fromXDelta="0%" 
    android:toXDelta="100%" 
    android:duration="1500"/> 
</set> 

然後,你的代碼更改爲:

... 

// Your required button style : 
Button gift = new Button(this); 
gift.setBackgroundColor(Color.BLACK); 
gift.setTextColor(Color.GREEN); 
gift.setGravity(Gravity.CENTER);; 
gift.setTextSize(18); 
gift.setText(NSLocalizedString("BONUS!\nYou Found A Solution\nAnd I Didn't!\n")); 
RelativeLayout journals = (RelativeLayout) findViewById(R.id.main); 
journals.addView(gift); 


// Add these below lines : 
Animation slideLeft = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_left); 
gift.startAnimation(slideLeft); 
gift.setVisibility(View.VISIBLE); 
... 

希望這可以解決你的問題...

相關問題