final LinearLayout animationLayer = new LinearLayout(this);
animationLayer.setGravity(Gravity.CENTER);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
final ImageView imageView = new ImageView(this);
final TranslateAnimation translateAnimation = new TranslateAnimation(
0f, width / 5, 0.0f, (height / 2 - height / 16));
translateAnimation.setDuration(ANIMATION_DURATION);
final ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.2f,
1.0f, 0.2f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.0f);
scaleAnimation.setDuration(ANIMATION_DURATION);
addContentView(animationLayer, new LayoutParams(width, height));
AnimationListener animationListener = new AnimationListener()
{
@Override
public void onAnimationStart(Animation animation)
{
}
@Override
public void onAnimationRepeat(Animation animation)
{
}
@Override
public void onAnimationEnd(Animation animation)
{
mAnimHandler.sendEmptyMessage(CLEAR_ANIMATIONLAYER);
}
};
translateAnimation.setAnimationListener(animationListener);
mAnimHandler = new Handler()
{
@Override
public void handleMessage(Message message)
{
// icon of download item to show
// Bitmap icon = (Bitmap) message.obj;
switch (message.what)
{
case INIT_ANIMATION_RES:
animationLayer.setVisibility(View.VISIBLE);
animationLayer.removeAllViews();
imageView.setImageResource(R.drawable.icon);
// icon
animationLayer.addView(imageView);
sendEmptyMessage(START_ANIMATION);
break;
case START_ANIMATION:
canClickBtn = false;
animationLayer.startAnimation(translateAnimation);
if (animationLayer.getChildCount() > 0)
{
animationLayer.getChildAt(TOP_LAYER)
.startAnimation(scaleAnimation);
}
else
{
throw new IndexOutOfBoundsException();
}
break;
case CLEAR_ANIMATIONLAYER:
canClickBtn = true;
// clear all views in this layer
animationLayer.setVisibility(View.INVISIBLE);
animationLayer.clearAnimation();
animationLayer.removeAllViews();
// call back of UI,go to next step
if (null != mListener)
{
mListener.onLoad();
}
else
{
throw new NullPointerException();
}
break;
default:
break;
}
}
};