位置视图X Y并将动画转换为原始位置

时间:2015-09-21 05:14:22

标签: android android-animation

我正在尝试制作动画,其中小圆圈在单击时立即转到下一个屏幕。我有一个自定义列表视图,有两个文本视图。其中一个textview是圆圈背景。

enter image description here

现在,对于listitem的点击事件,将触发以下代码:

Intent intent = new Intent(v.getContext(), DetailActivity.class);
                int[] location = new int[2];
                holder.initialView.getLocationInWindow(location);
                intent.putExtra("location", location);
                intent.putExtra("initialText", holder.initialView.getText());
                context.startActivity(intent);

在上面的代码中,我在initialTextView的窗口中获取位置,即带有圆形背景,然后将其传递给DetailActivity。

在detailActivity,OnResume内部,我有以下代码:

private TextView mInitialTextView;
private String mInitialText;
private int[] listItemLocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    listItemLocation = getIntent().getIntArrayExtra("location");
    mInitialText = getIntent().getStringExtra("initialText");

    mInitialTextView = (TextView) findViewById(R.id.initial);


}


@Override
protected void onResume() {
    super.onResume();

    mInitialTextView.post(new Runnable() {
        @Override
        public void run() {
            int[] location = new int[2];
            mInitialTextView.getLocationOnScreen(location);
            float x = location[0];
            float y = location[1];
            mInitialTextView.setX(listItemLocation[0]);
            mInitialTextView.setY(listItemLocation[1]);
            mInitialTextView.setText(mInitialText);
            mInitialTextView.animate().translationX(x)
                    .translationY(y).setDuration(1000).setStartDelay(100);
        }
    });

}

DetailActivity - 布局文件

<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.architectpack.animate.DetailActivity">

    <TextView
        android:id="@+id/initial"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="32dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="AM"

        android:background="@drawable/circle_background" />

</RelativeLayout>

然而,它不起作用。它没有正确计算位置。

感谢任何帮助。

0 个答案:

没有答案