我正在尝试制作动画,其中小圆圈在单击时立即转到下一个屏幕。我有一个自定义列表视图,有两个文本视图。其中一个textview是圆圈背景。
现在,对于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>
然而,它不起作用。它没有正确计算位置。
感谢任何帮助。