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、付费专栏及课程。

余额充值