今天就开始上代码了,今天是讲Animation动画。明天继续讲解ViewPager+Fragment替代Tabhost
关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:
Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;
Frame Animation:顺序播放事先做好的图,是一种画面转换画。
这里讲一下Tween Animation
动画类型
下面先来看看Android提供的动画类型。Android的animation由四种类型组成
在XML文件中:
alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果
在Java 源码中定义了相应的类,可以使用这些类的方法来获取和操作相应的属性:
AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果
Tween Animation
一个tween动画将对视图对象中的内容进行一系列简单的转换(位置,大小,旋转,透明性)。如果你有一个文本视图对象,你可以移动它,旋转它,让它变大或让它变小,如果文字下面还有背景图像,背景图像也会随着文件进行转换。
使用XML来定义Tween Animation
ShowActivity.java
public class ShowActivity extends Activity implements AnimationListener {
private Animation alphaAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_show);
ImageView iv=(ImageView)findViewById(R.id.index);
alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
alphaAnimation.setFillEnabled(true); //启动Fill保持
alphaAnimation.setFillAfter(false); //设置动画的最后一帧是保持在View上面
iv.setAnimation(alphaAnimation);
alphaAnimation.setAnimationListener(this); //为动画设置监听
}
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
this.finish();
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//在欢迎界面屏蔽BACK键
if(keyCode==KeyEvent.KEYCODE_BACK) {
return false;
}
return false;
}
}
fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="6000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
activity_show.xml 里面就一个带Id的ImageView组件在里面