如何将ImageView移动到另一个ImageView Android动画

时间:2017-02-14 20:24:55

标签: android android-studio animation android-imageview

任何人都知道如何将imageview移动到另一个imageview?

enter image description here

我正在考虑这种方法,或者可能是另一个我不知道的...没问题,我很高兴学习它

<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种具有重量值。 顶部的按钮是按钮的布局,但没有其他部分的重量。

所以从上面铺设卡片在layout1中 我希望到达的位置在布局2中 来自down的扑克牌在layout3

我也使用xml中的onClick方法而不是onClickListeners。感谢

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

Finnaly我在用户Francois L的帮助下取得了成功。

有很多工作要做,我不能说不,因为我需要重新设计我的所有布局,但这不是问题,因为我学到了新的东西,我感谢所有可以得到的帮助。

如果有人想将视图(任何类型的视图,imageview,buttonview,textview等)移动到另一个视图,则两个视图必须处于相同的布局中,这是最重要的部分。

实现这一目标的代码是:

//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();