我需要动画帮助。 (我的观点更复杂,我只向你展示我的布局xml的主要元素)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" >
<LinearLayout
android:id="@+id/oneBigView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/fourSmallViews"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<RelativeLayout
android:id="@+id/topLeft"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/topRight"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:weightSum="2" >
<RelativeLayout
android:id="@+id/bottomLeft"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/bottomRight"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
我想显示和隐藏一些观点:
我试过这样做,但总是有些不对劲:
显示
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="500" />
</set>
隐藏
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="500" />
</set>
的.java
final Animation leftIn=AnimationUtils.loadAnimation(this, R.anim.show);
final Animation leftOut=AnimationUtils.loadAnimation(this, R.anim.hide);
leftIn.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
//start animation for showing topRight bottomLeft and bottomRight
//with propper startOffset
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
left1.setVisibility(View.VISIBLE);
leftOut.setStartOffset(4000);
left1.startAnimation(leftOut);
}
});
leftOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
left1.setVisibility(View.INVISIBLE);
}
});
等等......它完全可见,但动画效果并不流畅(大部分时间它都像我没有使用动画一样)。当我停止更改visiblity动画正常工作,但它不能完成这项工作。
有什么想法吗?
答案 0 :(得分:0)
您可以尝试更改视图的Alpha值,而不是让它不可见或消失。
答案 1 :(得分:0)
您应该尝试将fillAfter
添加到<set>
这样的内容:
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fillAfter="true">
使用View.INVISIBLE
和View.VISIBLE
设置可见性通常不适用于动画。您唯一的选择是为<set>
添加Alpha动画。这是一个模板:
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="200"
android:interpolator="@android:anim/accelerate_interpolator"/>
根据您的需要进行调整。避免设置可见性。