Par*_*ari 2 java android android-animation
我正在使用翻译动画来移动ImageView.我正在使用此代码:
TranslateAnimation set1 = new TranslateAnimation(-4, 10, -110, 0);
set1.setDuration(3000);
TranslateAnimation set2 = new TranslateAnimation(10, -3, 0, 115);
set2.setDuration(3000);
set2.setStartOffset(2200);
TranslateAnimation set3 = new TranslateAnimation(-3, -20, 0, -100);
set3.setDuration(3000);
set3.setStartOffset(4500);
TranslateAnimation set4 = new TranslateAnimation(0, 13, 0, -120);
set4.setDuration(3000);
set4.setStartOffset(6500);
animSet.addAnimation(set1);
animSet.addAnimation(set2);
animSet.addAnimation(set3);
animSet.addAnimation(set4);
animSet.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)
创建一组动画后,我将它们应用于ImageView以下内容:
image = (ImageView)findViewById(R.id.img);
image.startAnimation(animSet);
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,但我不能暂停动画并继续点击按钮.
我怎样才能做到这一点?
我尝试了一切,但没有成功.知道怎么做吗?
请帮忙!
搜索一段时间后,我发现这个链接并检查这是否适用于翻译动画,经过一些修改后,这也适用于你的动画.
见下面的修改代码:
public class TranslateAnim extends TranslateAnimation{
public TranslateAnim(float fromXDelta, float toXDelta, float fromYDelta,
float toYDelta) {
super(fromXDelta, toXDelta, fromYDelta, toYDelta);
// TODO Auto-generated constructor stub
}
private long mElapsedAtPause=0;
private boolean mPaused=false;
@Override
public boolean getTransformation(long currentTime, Transformation outTransformation) {
if(mPaused && mElapsedAtPause==0) {
mElapsedAtPause=currentTime-getStartTime();
}
if(mPaused)
setStartTime(currentTime-mElapsedAtPause);
return super.getTransformation(currentTime, outTransformation);
}
public void pause() {
mElapsedAtPause=0;
mPaused=true;
}
public void resume() {
mPaused=false;
}
}
Run Code Online (Sandbox Code Playgroud)
我只会更改类名,扩展该类的类名和构造函数.
你可以使用它:
TranslateAnim set1, set2, set3, set4; // objects of TranslateAnim Class
set1 = new TranslateAnim(-4, 10, -110, 0); // initialize all objects like this way
animSet.addAnimation(set1); // add all animation objests in your animation set as you do before
animSet.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)
并且在开始动画之后,您只有呼叫暂停和恢复方法.感谢Johan与我们分享他的代码.
希望这能解决你的问题.:)
| 归档时间: |
|
| 查看次数: |
5352 次 |
| 最近记录: |