Diese so komisch ist, ich habe diese Animation Code:Animations Methode applyTransformation nicht ausgelöst, bis ich jedes Layout klicken
public class ExpandAnimation extends Animation {
private View mAnimatedView;
private MarginLayoutParams mViewLayoutParams;
private int mMarginStart, mMarginEnd;
private boolean mWasEndedAlready = false;
/**
* Initialize the animation
* @param view The layout we want to animate
* @param duration The duration of the animation, in ms
*/
public ExpandAnimation(View view, int duration) {
setDuration(duration);
mAnimatedView = view;
mViewLayoutParams = (MarginLayoutParams) view.getLayoutParams();
mMarginStart = mViewLayoutParams.rightMargin;
mMarginEnd = (mMarginStart == 0 ? (0- view.getWidth()) : 0);
view.setVisibility(View.VISIBLE);
mAnimatedView.requestLayout();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
// Calculating the new bottom margin, and setting it
mViewLayoutParams.rightMargin = mMarginStart
+ (int) ((mMarginEnd - mMarginStart) * interpolatedTime);
// Invalidating the layout, making us seeing the changes we made
mAnimatedView.requestLayout();
// Making sure we didn't run the ending before (it happens!)
} else if (!mWasEndedAlready) {
mViewLayoutParams.rightMargin = mMarginEnd;
mAnimatedView.requestLayout();
mWasEndedAlready = true;
}
}
}
Und ich diese Animation:
View parent = (View) v.getParent();
View containerMenu = parent.findViewById(R.id.containerMenu);
ExpandAnimation anim=new ExpandAnimation(containerMenu, 1000);
containerMenu.startAnimation(anim);
Diese Animation umschalten ein Layout verstecken/zeigen.
Standardmäßig ist es ausgeblendet. Wenn ich klicke, funktioniert die Animation und es wird angezeigt. Wenn ich erneut klicke, wird es korrekt verkleinert. Aber das 3. Mal, es tut nichts. Ich habe debugged und ich fand heraus, dass der Konstruktor , aber nichtapplyTransformation
heißt. Irgendwie, wenn ich irgendein Layout um den Bildschirm klicke, beginnt die Animation plötzlich.
Irgendeine Idee?
Bearbeiten Weiß jemand WANN ist applyTransformation ausgelöst?
Ich benutze den gleichen Code und habe genau das gleiche Problem. applyTranformation wird nie die dritte oder die folgenden Male aufgerufen. Es ist so, als ob die Animation irgendwie auf die Ansicht zurückgesetzt werden müsste. Ich habe versucht, containerMenu.clearAnimation() aufzurufen, aber es hilft nicht. –
Ich habe es seit vielen Stunden gekämpft, und immer noch ohne Ergebnis ... – Reinherd
@NetWolf Ich habe es geschafft, einen Workaround zu finden. Ich werde es als Antwort posten. – Reinherd