案例实现简单介绍
倒数计时器的实现:通过Frame实现从9开始,每隔一秒自动减一的计时器,然后将将代表不同数字的图片显示在ImageView 上
火箭发动:当计时器到0时,将火箭启动(喷火功能)
火箭起飞:利用Tween设置加速直线运动,火箭不断的按比例缩小,透明度不断减小…..
如果需要完整代码请击:http://pan.baidu.com/s/1o8dFaUA 密码:nlwc
java实现效果图片
代码实现
public class MainActivity extends Activity {
int time = 0;
ImageView iv_rocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_rocket = (ImageView) findViewById(R.id.iv_feiji);
// 启动帧动画
// 找到设置动画的控件
final ImageView iv = (ImageView) findViewById(R.id.iv);
// 取出背景,并强装成动画
AnimationDrawable anim = (AnimationDrawable) iv.getBackground();
// 获取动画持续时间
// 先获取所有帧数
int frameCount = anim.getNumberOfFrames();
// 遍历每一帧,取出每一帧的持续时间,并累加
for (int i = 0; i < frameCount; i++) {
time += anim.getDuration(i);
}
// 启动线程,等待动画结束
new Thread() {
public void run() {
SystemClock.sleep(time);
// 动画结束,把ImageView设置不可见
// 在主线程中运行
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
iv.setVisibility(View.GONE);
// 启动火箭
begin();
}
});
}
}.start();
// 启动
anim.start();
}
// 添加火箭启动方法
public void begin() {
// feiImageView.setVisibility(View.VISIBLE);
AnimationDrawable aim = (AnimationDrawable) iv_rocket
.getBackground();
aim.start();
}
public void fly(View view){
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rocket_set);
//启动动画
iv_rocket.startAnimation(anim);
}
}
xml的相关实现
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<!--
duration:持续时间
fillAfter:是否在最后一帧停放图片
fromYDelta:
fromXDelta:从哪里开始移动
toYDelta:
toXdalta:移动到哪里
pivotX:
pivotY:中线点
-->
<translate
android:duration="2000"
android:fillAfter="false"
android:fromYDelta="0"
android:toYDelta="-300%p" />
<scale
android:duration="2000"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.2"
android:toYScale="0.2" />
<alpha
android:duration="2000"
android:fromAlpha="1"
android:toAlpha="0.2" />
<!--
<rotate
android:duration="2000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="0%"
android:toDegrees="360" >
</rotate>
-->
</set>