Android动画之:Frame动画
2018-07-20 来源:open-open
先看下Frame动画的xml布局方法:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/animation_1" android:duration="500" />
<item android:drawable="@drawable/animation_2" android:duration="500" />
<item android:drawable="@drawable/animation_3" android:duration="500" />
<item android:drawable="@drawable/animation_4" android:duration="500" />
<item android:drawable="@drawable/animation_5" android:duration="500" />
<item android:drawable="@drawable/animation_6" android:duration="500" />
</animation-list>
在代码中实现就三句代码:
animationIv.setBackgroundResource(R.anim.test_animation); /**animationIv是我们要显示的ImageView,已经写在而局文件中*/
AnimationDrawable anim = (AnimationDrawable) animationIv.getBackground();
anim.start();
另外一种 就是纯属代码实现:
public class FrameAnimationActivity extends Activity {
private Button startBtn;
private ImageView animationIv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo);
startBtn = (Button) findViewById(R.id.start_btn);
animationIv = (ImageView) findViewById(R.id.animation_iv);
startBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startAnimation(animationIv);
}
});
}
/**用代码实现Frame动画*/
private void startAnimation(ImageView iv) {
/**Frame动画对象*/
AnimationDrawable anim = new AnimationDrawable();
/**添加动画元素*/
for (int i = 1; i <= 6; i++) {
/**根据资源名称和目录获取对应的资源ID*/
int id = getResources().getIdentifier("animation_" + i, "drawable", getPackageName());
/**根据ID获取到Drawable对象*/
Drawable drawable = getResources().getDrawable(id);
/**添加到AnimationDrawable中,300是指动画时间,单位:毫秒*/
anim.addFrame(drawable, 300);
}
/**设置动画的循环方式,true为只一次,fasle为不断循环播放*/
anim.setOneShot(false); // 设置为loop
/**设置ImageView的背景为动画对象*/
iv.setBackgroundDrawable(anim);
/**开始动画*/
anim.start();
}
/**放置在/res下的anim或drawable目录中(/res/[anim | drawable]/filename.xml),文件名可以作为资源ID在代码中引用
* 我们需要把这段代码放在onWindowFocusChanged方法中,当Activity展示给用户时,onWindowFocusChanged方法就会被调用,
* 我们正是在这个时候实现我们的动画效果。onWindowFocusChanged是在onCreate之后被调用的*/
@Override
public void onWindowFocusChanged(boolean hasFocus) { //这里是用xml写的动画,与上面点击事件的动画只需保留任意一个就可以
super.onWindowFocusChanged(hasFocus);
animationIv.setBackgroundResource(R.anim.test_animation);
AnimationDrawable anim = (AnimationDrawable) animationIv.getBackground();
anim.start();
}
}
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:Android获取默认浏览器信息