У меня та же проблема, я перепробовал все функции и не добился успеха, потому что такие функции, как 'getCurrentFrame ()', возвращают шестнадцатеричное значение, которое меняется каждый раз, когда вы запускаете приложение, поэтому я сделал что-то, что решило мою проблему и надеюсь, что это решит ваше:
Вместо того, чтобы пытаться получить имя изображения кадра ('fruits1'), вы должны получить положение кадра, предположив, что пользователь остановил анимацию в кадре 'fruits2', поэтому номер кадра равен 1, потому что 0 это фрейм 'fruits1'. Как ты это сделаешь?
// Create the animation
myImage.setBackgroundResource(R.anim.myanimation);
myAnimation = (AnimationDrawable) myImage.getBackground();
Когда вы останавливаете анимацию, вы делаете что-то вроде этого:
myAnimation.stop();
// The variable that will guard the frame number
int frameNumber;
// Get the frame of the animation
Drawable currentFrame, checkFrame;
currentFrame = myAnimation.getCurrent();
// Checks the position of the frame
for (int i = 0; i < myAnimation.getNumberOfFrames(); i++) {
checkFrame = myAnimation.getFrame(i);
if (checkFrame == currentFrame) {
frameNumber = i;
break;
}
}
Итак, переменная frameNumber будет защищать номер кадра, в вашем случае 0, 1 или 2.
Если будет много кадров, вы можете сделать функцию, которая возвращает имя ('fruits1', 'fruits2' ...) на основе номера кадра, используя массив.