我有一个隐藏在开始的视图(它可见但在屏幕下方,因此用户无法看到它),并且当用户第一次点击标记时,视图会显示动画并且用户可以看到它。当用户单击其他标记时,视图应向下移动(到屏幕下方的原始位置,隐藏),然后更改它具有的TextView文本,最后使用新信息再次向上移动。
一切正常,但是动画效果不佳;视图刚刚消失,再次向上运动。我尝试了动画和TranslateAnimation,结果相同。
这是我的代码:
@Override
public boolean onMarkerClick(Marker marker) {
if (!anyMarkerSelected) {
textViewNombre.setText(establecimiento.getNombreEstablecimiento());
textViewDireccion.setText(establecimiento.getNombreVia());
textViewDescripcion.setText(establecimiento.getNumeroVia());
view.startAnimation(animationUp);
animationUp.setFillAfter(true);
mapa.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
anyMarkerSelected = true;
return true;
} else {
view.startAnimation(animationDown); //This animation is not working
animationDown.setFillAfter(true);
textViewNombre.setText(establecimiento.getNombreEstablecimiento());
textViewDireccion.setText(establecimiento.getNombreVia());
textViewDescripcion.setText(establecimiento.getNumeroVia());
view.startAnimation(animationUp);
animationUp.setFillAfter(true);
return true;
}
}
动画的XML文件是:
<translate
android:duration="200"
android:fromXDelta="0"
android:toYDelta="110%" />
<translate
android:duration="200"
android:fromXDelta="0"
android:toYDelta="-110%" />
有什么建议吗?
答案 0 :(得分:0)
你正在同时开始2个不同的动画,看起来它是默认为后者。你需要将它们都放入一个AnimationSet中并在你的向下动画上放置一个setStartOffset。
以下是一些示例代码:
//only takes an animation listener and with that you need implement all the methods
public void doViewAnimationSet(){
TranslateAnimation transTo= new TranslateAnimation(0, -mLittleChef.getX()/2, 0, 0);
TranslateAnimation transBack= new TranslateAnimation(0, mLittleChef.getX()/2, 0, 0);
transTo.setDuration(mShortAnimationDuration/2);
transBack.setDuration(mShortAnimationDuration/2);
transTo.setStartOffset(0);
transBack.setStartOffset(transTo.getDuration());
AnimationSet transSet= new AnimationSet(true);
transSet.setInterpolator(new LinearInterpolator());
transSet.addAnimation(transTo);
transSet.addAnimation(transBack);
transSet.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
simpleLock= false;
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
});
mLittleChef.startAnimation(transSet);
//another way to start your set animation:
//set.setTarget(mLittleChef);
//set.start();
}
您可以阅读更多内容:here
答案 1 :(得分:0)
您还在以下行中出现拼写错误: textViewDireccion.setText(establecimiento.getNombreVia());
应该是:
textViewDirection与Direccion ..