2017-02-14 135 views
1

任何人都知道我可以如何將imageview移動到另一個imageview?如何將ImageView移動到另一個ImageView Android動畫

enter image description here

IM在這種方法中,又或許想是另外一個,我不知道......沒問題,我很高興去學習它

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillAfter="true" 
android:interpolator="@android:anim/linear_interpolator"> 

<translate 
    android:duration="800" 
    android:fromXDelta="0%p" 
    android:toXDelta="75%p" /> 

我知道來自XDelta(是起始位置),toXDelta是應該到達的位置..但是?我怎麼能知道我的起始位置和到達位置看我的圖片示例?

添加細節:

有4點不同的佈局在這裏,但只有3個是與權重值。 從頂部的酒吧是按鈕是一個佈局,但沒有像其餘的重量。

多達所以鋪設卡在佈局1 我想要的位置到達是從上下佈局2 撲克牌在layout3

而且我在使用XML的onClick方法不onClickListeners。由於

回答

2

您可以通過編程做到這一點是這樣的:

@Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final View target = findViewById(R.id.target); 
    final View viewToMove = findViewById(R.id.viewToMove); 

    viewToMove.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(View v) { 
      translate(viewToMove, target); 
     } 
    }); 
} 

private void translate(View viewToMove, View target) { 
    viewToMove.animate() 
      .x(target.getX()) 
      .y(target.getY()) 
      .setDuration(1000) 
      .start(); 
} 

這裏的XML:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
android:id="@+id/activity_main" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ImageView 
    android:id="@+id/target" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_gravity="center" 
    android:background="@color/colorAccent"/> 

<ImageView 
    android:id="@+id/viewToMove" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:background="@color/colorPrimary" 
    android:src="@mipmap/ic_launcher"/> 
</FrameLayout> 
+0

感謝您的回答,但...這方法是不工作...我需要第一紙牌移動到的ImageView其中箭頭結束。 在我的應用程序中使用像這樣實現的代碼之後: ImageView poz1Inamic =(ImageView)findViewById(R.id.inamic_pozitia1); ImageView cartePusaInamic =(ImageView)findViewById(R.id.cartePusaInamic); poz1Inamic.animate() .X(cartePusaInamic.getX()) .Y(cartePusaInamic.getY()) .setDuration(1000) 。開始(); imageview不要去我想要的視圖 –

+0

請添加更多關於您的視圖層次結構的細節。 isamic_pozitia1和cartePusaInamic是否在相同的佈局? –

+0

添加了請求的詳細信息 –

0

Finnaly我有用戶的幫助succeded弗朗索瓦·L.

被很多的工作要做,我不會說不,因爲我需要重新設計我所有的佈局,但這不是問題,因爲我學到了一些新的東西,並且我非常感謝所有可以獲得的幫助。

如果有人想將視圖(任何類型的視圖,圖像視圖,按鈕視圖,文本視圖等)移動到另一個視圖,則必須使兩個視圖處於相同的佈局中,這是最重要的部分。

和代碼實現這一目標是:

//here is the part of initialization 
    ImageView poz1Inamic = (ImageView) findViewById(inamic_pozitia1); 
    ImageView poz1InamicSpateCarte = (ImageView) findViewById(inamic_pozitia1spatecarte); 

    //other code 
    poz1InamicSpateCarte.setVisibility(View.INVISIBLE); 

    //here is the initialization of the arrive position 
    ImageView cartePusaInamic = (ImageView) findViewById(R.id.cartePusaInamic); 

    //the code for moving from start position to arrive position 
    poz1Inamic.animate() 
      .x(cartePusaInamic.getX()) 
      .y(cartePusaInamic.getY()) 
      .setDuration(333) 
      .start();