또한 다음과 같이 수행 할 수 있습니다 а можно еще так :
public class MyTranslateAnimation extends TranslateAnimation {
private long mTimePause, mTimeTotal;
private boolean mPause;
public MyTranslateAnimation(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean getTransformation(long currentTime, Transformation outTransformation) {
updateTime(currentTime);
return super.getTransformation(mTimeTotal - mTimePause, outTransformation);
}
private void updateTime(long currentTime) {
long dt = currentTime - mTimeTotal;
mTimeTotal += dt;
if (mPause) {
mTimePause += dt;
}
}
public void pause() {
mPause = true;
}
public void resume() {
mPause = false;
}
}
는이 같은 자신의 AnimationUtils
서브 클래스를 만들 수있는 XML에서 애니메이션을 만들려면 다음 для создания анимации из XML можно сделать свой AnimationUtils :
public class MyAnimationUtils {
public static Animation loadAnimation(Context context, int id) throws Resources.NotFoundException {
XmlResourceParser parser = null;
try {
parser = context.getResources().getAnimation(id);
return createAnimationFromXml(context, parser);
} catch (XmlPullParserException ex) {
Resources.NotFoundException rnf = new Resources.NotFoundException("Can't load animation resource ID #0x" + Integer.toHexString(id));
rnf.initCause(ex);
throw rnf;
} catch (IOException ex) {
Resources.NotFoundException rnf = new Resources.NotFoundException("Can't load animation resource ID #0x" + Integer.toHexString(id));
rnf.initCause(ex);
throw rnf;
} finally {
if (parser != null) parser.close();
}
}
private static Animation createAnimationFromXml(Context c, XmlPullParser parser) throws XmlPullParserException, IOException {
return createAnimationFromXml(c, parser, null, Xml.asAttributeSet(parser));
}
private static Animation createAnimationFromXml(Context c, XmlPullParser parser, AnimationSet parent, AttributeSet attrs) throws XmlPullParserException, IOException {
Animation anim = null;
// Make sure we are on a start tag.
int type;
int depth = parser.getDepth();
while (((type=parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth)
&& type != XmlPullParser.END_DOCUMENT) {
if (type != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("set")) {
anim = new AnimationSet(c, attrs);
createAnimationFromXml(c, parser, (AnimationSet)anim, attrs);
} else if (name.equals("alpha")) {
anim = new AlphaAnimation(c, attrs);
} else if (name.equals("scale")) {
anim = new ScaleAnimation(c, attrs);
} else if (name.equals("rotate")) {
anim = new RotateAnimation(c, attrs);
} else if (name.equals("translate")) {
//anim = new TranslateAnimation(c, attrs);
anim = new MyTranslateAnimation(c, attrs); // отредактировали только эту строчку, остальное взяли как было
} else {
throw new RuntimeException("Unknown animation name: " + parser.getName());
}
if (parent != null) {
parent.addAnimation(anim);
}
}
return anim;
}
}
그리고 당신은이 같은 애니메이션을 만들 : и를 вот так создаем анимацию :이 도움이
MyTranslateAnimation cloud1 = (MyTranslateAnimation) MyAnimationUtils.loadAnimation(this, R.anim.main_cloud1);
희망. Пользутесь на здоровье!
XML에서 애니메이션을로드 할 수 있습니까? – Deepak
오, 제 질문에 게시 했습니까? 너무 어리 석다. : P – Deepak
일시 중지시 사용 후보기 위치를 설정할 수 있습니까? 중간에 일시 중지 방법을 사용한다고 가정하고 일시 중지 된 위치에 새 애니메이션을 적용하려고합니다. 가능한가? –