动画是一种综合艺术门类,是工业社会人类寻求精神解脱的产物,它集合了绘画、漫画、电影、数字媒体、摄影、音乐、文学等众多艺术门类于一身的艺术表现形式。 动画的英文有:animation、cartoon、animated cartoon、cameracature。其中,比较正式的 "Animation" 一词源自于拉丁文字根的anima,意思为灵魂;动词animate是赋予生命,引申为使某物活起来的意思。所以animation可以解释为经由创作者的安排,使原本不具生命的东西像获得生命一般地活动。 早期,中国将动画称为美术片;现在,国际通称为动画片。动画是一门幻想艺术,更容易直观表现和抒发人们的感情,可以把现实不可能看到的转为现实,扩展了人类的想像力和创造力。 广义而言,把一些原先不活动的东西,经过影片的制作与放映,变成会活动的影像,即为动画。“动画”的中文叫法应该说是源自日本。第二次世界大战前后,日本称一线条描绘的漫画作品为“动画”。 动画是通过把人、物的表情、动作、变化等分段画成许多画幅,再用摄影机连续拍摄成一系列画面,给视觉造成连续变化的图画。它的基本原理与电影、电视一样,都是视觉原理。医学已证明,人类具有“视觉暂留”的特性,就是说人的眼睛看到一幅画或一个物体后,在1/24秒内不会消失。利用这一原理,在一幅画还没有消失前播放出下一幅画,就会给人造成一种流畅的视觉变化效果。因此,电影采用了每秒24幅画面的速度拍摄播放,电视采用了每秒25幅(PAL制,中国电视就用此制式)或30幅(NTSC制)画面的速度拍摄播放。如果以每秒低于24幅画面的速度拍摄播放,就会出现停顿现象。 定义动画的方法,不在于使用的材质或创作的方式,而是作品是否符合动画的本质。时至今日,动画媒体已经包含了各种形式,但不论何种形式,它们具体有一些共同点:其影像是以电影胶片、录像带或数字信息的方式逐格记录的;另外,影像的“动作”是被创造出来的幻觉,而不是原本就存在的。
得先有布局
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv_frame_image"
android:background="@drawable/iv_frame"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"
android:onClick="start"
/>
</LinearLayout>
java代码
public class FrameActivity extends AppCompatActivity {
private ImageView iv_frame_image;
private AnimationDrawable animationDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frame);
iv_frame_image = (ImageView) findViewById(R.id.iv_frame_image);
animationDrawable = (AnimationDrawable) iv_frame_image.getBackground();
}
public void start(View view){
animationDrawable.start();
}
}
public void operation(View view){
switch (view.getId()) {
case R.id.btn_main_alpha:
//加载动画
animation = AnimationUtils.loadAnimation(this, R.anim.iv_alpha);
break;
case R.id.btn_main_rotate:
//加载动画
animation=AnimationUtils.loadAnimation(this,R.anim.iv_rotate);
break;
case R.id.btn_main_scale:
animation1 = AnimationUtils.loadAnimation(this, R.anim.iv_scale);
animation2 = AnimationUtils.loadAnimation(this, R.anim.iv_scale2);
//给动画设置监听
animation1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
iv_main_image.startAnimation(animation2);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
animation2.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
iv_main_image.startAnimation(animation1);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
iv_main_image.startAnimation(animation1);
return;
case R.id.btn_main_translate:
//animation=AnimationUtils.loadAnimation(this,R.anim.iv_translate);
ObjectAnimator.ofFloat(iv_main_image,"translationX",0,200).setDuration(2000).start();
ObjectAnimator.ofFloat(iv_main_image,"translationY",0,200).setDuration(2000).start();
break;
case R.id.btn_main_all:
animation=AnimationUtils.loadAnimation(this,R.anim.iv_all);
break;
}
iv_main_image.startAnimation(animation);
}