4.5 腾讯手机卫士小火箭发射效果

//设置动画效果:

<?xml version="1.0" encoding= "utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable ="@drawable/desktop_rocket_launch_1" android:duration="200" />
    <item android:drawable ="@drawable/desktop_rocket_launch_2" android:duration="200" />
</animation-list>


-------------------------------------------------------------------------------------

public class MainActivity extends Activity {
      AnimationDrawable rocketAnimation;
      ImageView rocketImage;

      ImageView iv_bottom;
      ImageView iv_somke_top;
      
      //跟新ui
      Handler handler = new Handler(){
             public void handleMessage(android.os.Message msg) {
                   int height = msg. what;
                   int iv_height = rocketImage.getBottom() - rocketImage.getTop();   //得到imageview 的高度
                   rocketImage.layout( rocketImage.getLeft(), height, rocketImage.getRight(), height+iv_height );
                   if(msg. what ==0){
                        AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f);
                        aa.setFillAfter( true);
                        aa.setDuration(1000);
                         iv_somke_top.startAnimation(aa);
                         iv_bottom.setVisibility(View. INVISIBLE);
                  }
                   if(msg. what ==200){
                         iv_somke_top.setVisibility(View. VISIBLE);
                  }
            };
      };
      @Override
      protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
            setContentView(R.layout. activity_main);

             //找到关心的控件
             rocketImage = (ImageView) findViewById(R.id. iv_rocket); 
             rocketImage.setBackgroundResource(R.drawable. rocket);
             rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
            
             iv_bottom = (ImageView) findViewById(R.id. iv_bottom);
             iv_somke_top = (ImageView) findViewById(R.id. iv_somke_top);

             //给imageView设置触摸事件
             rocketImage.setOnTouchListener( new OnTouchListener() {
                   int startX =0;
                   int startY = 0;
                   @Override
                   public boolean onTouch(View v, MotionEvent event) {
                         if (! rocketAnimation.isRunning()) {
                               rocketAnimation.start();
                        }
                         switch (event.getAction()) {
                         case MotionEvent. ACTION_DOWN:     //摸到时
                               startX = ( int) event.getRawX();
                               startY = ( int) event.getRawY();
                              
                               break;
                         case MotionEvent. ACTION_MOVE:      //移动时
                               int newX = ( int) event.getRawX();
                               int newY = ( int) event.getRawY();
                               int dx = newX - startX;
                               int dy = newY - startY;
                              
                               int l = rocketImage.getLeft();
                               int r = rocketImage.getRight();
                               int t = rocketImage.getTop();
                               int b = rocketImage.getBottom();
                              
                               int newl = l+ dx;
                               int newr = r+ dx;
                               int newt = t + dy;
                               int newb = b + dy;
                              
                               rocketImage.layout(newl, newt, newr, newb);    //确定 imageview的位置
                              
                               startX = ( int) event.getRawX();
                               startY = ( int) event.getRawY();
                              
                               break;
                         case MotionEvent. ACTION_UP:                  //离开时
                               int bottom = rocketImage.getBottom();
                               int left = rocketImage.getLeft();
                              
                               if( bottom > 400 && left>100){
                                    Toast. makeText(getApplicationContext(), "发射火箭", 0).show();
                                     iv_bottom .setVisibility(View.VISIBLE);
                                    AlphaAnimation aa = new AlphaAnimation(0.0f, 1.0f);
                                    aa.setDuration(1000);
                                     iv_bottom.startAnimation(aa);
                                    
                                    
                                     //动态定时更新 view对象的位置.
                                     new Thread(){
                                           public void run() {
                                                 for( int i =1 ;i<=8;i++){
                                                       try {
                                                            Thread. sleep(10);
                                                      } catch (InterruptedException e) {
                                                            e.printStackTrace();
                                                      }
                                                       int height = 50*i;
                                                       handler.sendEmptyMessage(400-height);
                                                }
                                          };
                                    }.start();
                              }

                               break;
                        }

                         return true;
                  }
            });
      }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值