Я работаю над тем, чтобы анимация работала. Я перемещаю строку поиска с середины экрана в верхнюю часть экрана. Анимация работает нормально, но как только она движется, я не могу взаимодействовать ни с чем. Я обновил позицию, но не могу взаимодействовать с ней независимо. Вот что у меня до сих пор:Обновление позиции просмотра после анимации
private void moveSearchToTop()
{
FrameLayout root = (FrameLayout) findViewById(R.id.rootLayout);
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
statusBarOffset = dm.heightPixels - root.getMeasuredHeight();
int originalPos[] = new int[2];
mSearchBar.getLocationOnScreen(originalPos);
search_top = statusBarOffset - originalPos[1];
TranslateAnimation anim = new TranslateAnimation(0, 0, 0, search_top);
anim.setDuration(500);
anim.setFillAfter(true);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mSearchBar.layout(0, search_top, 0, mSearchBar.getHeight() + search_top);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mSearchBar.startAnimation(anim);
}
и вот что вид выглядит в XML:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/search_bar"
android:background="@android:drawable/dialog_holo_light_frame">
<ImageView
android:id="@+id/search_icon"
android:layout_width="wrap_content"
android:onClick="onSearchClick"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
android:src="@drawable/search"/>
<EditText
android:id="@+id/search_field"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:singleLine="true"
android:hint="Search"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
android:src="@drawable/camera"/>
</LinearLayout>
мне нужно обновить положение всех дочерних элементов тоже ли? Спасибо за толкание в правильном положении.
Вы используете вид анимацию, который только собирается изменить, где нарисовано, а не фактическое положение. Я уверен, что есть способы обмануть его в перемещение фактической позиции, но я всегда считаю, что проще всего использовать объектный аниматор, поскольку он обновит фактическое положение без необходимости делать что-либо лишнее. – Whitney