Android的 - 只有在父视图播放动画(Android - Playing animation

2019-10-19 16:21发布

我怎样才能让只在父视图的动画运行,留给孩子们的观点不变(即没有动画它们)?

这里是我的尝试:

public class TurnButton extends RelativeLayout implements OnClickListener, AnimationListener{

    private static final String TAG = TurnButton.class.getSimpleName();

    private final int textViewID = 1;

    public TurnButton(final Context context, final AttributeSet attrs, final int defStyle) {

        super(context, attrs, defStyle);
        setEverything();
    }

    public TurnButton(final Context context, final AttributeSet attrs) {

        super(context, attrs);
        setEverything();
    }

    public TurnButton(final Context context) {

        super(context);
        setEverything();
    }

    private void setEverything(){

        setOnClickListener(this);

        final TextView textViewNumber = new TextView(ThisApplication.getContext());
        textViewNumber.setId(textViewID);
        textViewNumber.setText("30");
        textViewNumber.setTextColor( ThisApplication.getContext().getResources().getColor(R.color.white) );

        final RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        relativeParams.addRule(RelativeLayout.CENTER_IN_PARENT);

        addView(textViewNumber, relativeParams);
    }

    @Override
    public void onClick(final View view) {

        final RotateAnimation rotate = new RotateAnimation( view.getRotation(), view.getRotation() - 360.0f, RotateAnimation.RELATIVE_TO_SELF, 0.5f,
                                                            RotateAnimation.RELATIVE_TO_SELF, 0.5f);
        rotate.setDuration(300);
        rotate.setFillEnabled(true);
        rotate.setFillAfter(true);
        view.startAnimation(rotate);

        view.findViewById(textViewID).setRotation(0);
    }
}

我想不旋转的TextView我在它的中心添加到旋转TurnButton视图

Answer 1:

有可能通过施加反向旋转到子图(的TextView):

@Override
public void onClick(final View view) {

    final RotateAnimation rotate = new RotateAnimation(view.getRotation(),
            view.getRotation() - 360.0f, RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f);
    rotate.setDuration(300);
    rotate.setFillEnabled(true);
    rotate.setFillAfter(true);
    view.startAnimation(rotate);

    final TextView textView = (TextView)view.findViewById(textViewID);
    final RotateAnimation reverseRotate = new RotateAnimation(view.getRotation(),
            360.0f - view.getRotation(), RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f);
    reverseRotate.setDuration(300);
    reverseRotate.setFillEnabled(true);
    reverseRotate.setFillAfter(true);
    textView.startAnimation(reverseRotate);
}


文章来源: Android - Playing animation only on parent view