我有一个TextView
,动画可以在点击时滑出。现在,当我再次单击TextView
布局的区域时,点击事件仍然会被触发,就好像TextView
仍然存在一样。我希望TextView
表现得就像通过动画隐藏它一样。
以下是我的动画文件。
RES /动画/ slide_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<scale
android:duration="500"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="0.0" />
</set>
RES /动画/ slide_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="500"
android:fromXScale="1.0"
android:fromYScale="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
以下是我的布局xml 。
<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"
tools:context=".MainActivity" >
<TextView
android:id="@+id/anim_tv"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:text="@string/hello_world"
android:gravity="center"
android:background="#8800ff00"/>
</RelativeLayout>
以下是Activity
代码。
public class MainActivity extends Activity {
TextView animTV;
Animation animSlideIn;
Animation animSlideOut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
animTV = (TextView) findViewById(R.id.anim_tv);
animTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
hide();
}
});
// load the animation
animSlideIn = AnimationUtils.loadAnimation(this, R.anim.slide_in);
animSlideOut = AnimationUtils.loadAnimation(this, R.anim.slide_out);
show();
}
private void show() {
animTV.startAnimation(animSlideIn);
}
private void hide() {
animTV.startAnimation(animSlideOut);
}
}
有人能建议解决这个问题吗?
谢谢,
阿马尔
答案 0 :(得分:1)
您可以实施Animation.AnimationListener
,并且在调用onAnimationEnd
时,您可以将TextView
的可见性更改为
答案 1 :(得分:1)
根据@blackbelt的建议,我在Activity
进行了更新。
animSlideOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
animTV.setVisibility( View.GONE );
}
@Override
public void onAnimationRepeat(Animation animation) { }
});
@blackbelt解决方案部分有用。为了使其完全正常运行,我必须更新slide_out.xml
以将android:fillAfter
属性设置为false
。