Problème avec ImageButton animations successives
Bonjour,
Dans le cadre d'une application Android Pour TV je rencontre un problème.
Le problème se situe lorsque j’essaye d'animer une série d' ImageButton pour en faire une sorte de Dock.
L'animation se déroule correctement (Scale). Mais lorsque je refais une nouvelle fois l'animation celle ci se remet dans son état initial alors que je souhaiterais qu'elle gardes les valeurs courantes pour celles ci. (post animation)
Voici la parti de code concerné.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyDown(keyCode, event);
View MainMenu = findViewById(R.id.menu_principal);
ArrayList<View> Buttons = MainMenu.getTouchables();
Animation setZoomIn = AnimationUtils.loadAnimation(ctx,
R.anim.menuzoomin);
Animation setZoomOut = AnimationUtils.loadAnimation(ctx,
R.anim.menuzoomout);
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_LEFT:
{
for (View view : Buttons)
{
applyAnimation(view, setZoomIn);
}
return true;
}
case KeyEvent.KEYCODE_DPAD_RIGHT:
{
}
}
return (true);
}
private void applyAnimation(final View view, final Animation anim)
{
anim.setAnimationListener(new Animation.AnimationListener()
{
private boolean doEnd = true;
@Override
public void onAnimationEnd(Animation animation)
{
if (doEnd)
{
doEnd = false;
setViewPos(view, anim, anim.getStartTime() + anim.getDuration());
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
});
view.startAnimation(anim);
}
private void setViewPos(View view, Animation anim, long time)
{
// Get the transformation
Transformation trans = new Transformation();
anim.getTransformation(time, trans);
// Get the matrix values
float[] values = new float[9];
Matrix m = trans.getMatrix();
m.getValues(values);
// Get the position and apply the scroll
/*final float x = values[Matrix.MTRANS_X];
final float y = values[Matrix.MTRANS_Y];
view.scrollTo(-(int)x, -(int)y);*/
final float width = values[Matrix.MSCALE_X];
final float height = values[Matrix.MSCALE_Y];
final ImageButton test = (ImageButton) view;
android.view.ViewGroup.LayoutParams params = test.getLayoutParams();
params.height =10;//(int) (height * view.getLayoutParams().height) ;
params.width =10;//(int) (width * view.getLayoutParams().width);
test.setLayoutParams(params);
//setWidth((int) (width * view.getLayoutParams().width));
//Button.setHeight((int) (height * view.getLayoutParams().height));
//view.getLayoutParams().height = (int) (height * view.getLayoutParams().height);
//view.getLayoutParams().width = (int) (width * view.getLayoutParams().width);
//view.setScaleX(width);
//view.setScaleY(height);
} |
Merci d'avance.