大家好,今晚给大家分享的是一个有趣的Demo实现小火箭升空,其实就是一个动画效果,拖拉到底部,松手,小火箭缓缓上升,直至到顶部消失。我就把这个小火箭命名为杰哥号吧,好记辨识度强。做的杰哥号小火箭涉及的技术矩阵位置改变,少许动画效果,开辟子线程,大概就是这样。图一是火箭起始点,未拖拉,图二是火箭已到底部释放,飞行了半路,图三是火箭块到顶部界点。下面我为大家详细讲解。

1.res/layout/activity_rocket.xml布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

//设置小火箭ImageView,类型是:matrix矩形类型,src是帧动画,通过这样小火箭显示才有动的感觉

<ImageView
        android:id="@+id/rocket_iv"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:scaleType="matrix"
        android:src="@drawable/rocket_anim_list" />

//屏幕地下的云,设置为移除状态

<ImageView
        android:id="@+id/smoke_iv"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:visibility="gone"
        android:src="@drawable/desktop_smoke_m" />

</LinearLayout>

2.MainActivity.java编写实现代码

public class RocketActivity extends Activity {
 private ImageView mRocketIv;
 private Matrix matrix = new Matrix();//图形矩阵,用于缩放平移矩阵
 private Matrix startMatrix = new Matrix();//开始的矩阵
 private Vibrator vibrator;//系统震动
 private PointF pointF;//开始按下的点
 private ImageView mSmokeIv;

//创建消息机制,用于接受消息
 private Handler handler=new Handler(
  public void handleMessage(android.os.Message msg) {
   //更新UI控件的位置
   matrix.postTranslate(0, -20);
  //重新设置图片矩形位置
   mRocketIv.setImageMatrix(matrix);

//底部的云出现
   mSmokeIv.setVisibility(View.VISIBLE);
   
   
  };
 };

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_rocket);

//初始化组件

mRocketIv = (ImageView) findViewById(R.id.rocket_iv);
  mSmokeIv=(ImageView) findViewById(R.id.smoke_iv);
 //初始化震动,得到系统震动,getSystemService
  vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

//图片触摸事件,小火箭实现升空,按,拖拉,放,是触摸效果
  mRocketIv.setOnTouchListener(new MyOnTouchListener());

}
 private class MyOnTouchListener implements OnTouchListener {

/*event.getAction() :取得事件的动作  ,它是16为二进制数,动作是存放在低八位,即要把低八位的数据取出
   * ACTION_MASK : 动作掩码    ,值是255  ,取低八位
   *  ip mask :255.255.255.0  
   *  &:位与操作 
   *
   */
  public boolean onTouch(View v, MotionEvent event) {

//ACTION_MASK掩码,取得是低八位,事件动作是16二进制

switch (event.getAction()&MotionEvent.ACTION_MASK) {

//手指按下的状态,只有一只手指
   case MotionEvent.ACTION_DOWN:
    vibrator.vibrate(100);//每个0.1秒开始震动
/得到/起始点的位置
    pointF=new PointF(event.getX(), event.getY());

//得到图片矩阵开始的位置
    startMatrix.set(mRocketIv.getImageMatrix());
    break;
    //移动状态
   case MotionEvent.ACTION_MOVE:
    vibrator.vibrate(100)
   //取得偏移量,现在的坐标-起始点的坐标
    float dx=event.getX()-pointF.x;
    float dy=event.getY()-pointF.y;

matrix.set(startMatrix); //设置起始矩阵
    //平移矩阵
    matrix.postTranslate(dx, dy);
    break;
    
     //松开手指状态,无手指
   case MotionEvent.ACTION_UP:
              vibrator.cancel();//取消震动
      //构建发射火箭的方法
              sendRocket();
    
    break;

default:
    break;
   }

//重新设置图片矩阵位置
   mRocketIv.setImageMatrix(matrix);
   return true;//返回为true
  }

}

//发射火箭是耗时操作,需要开辟子线程
 public void sendRocket() {
  new Thread(new Runnable() {
   
 //休眠0.1秒,每个0.1秒发射一次,不休眠的话,直接高速发射,系统处理的非常快
   public void run() {

//for 循环用于更新发射,更新休眠
               for(int i=0;i<1000;i++){
                SystemClock.sleep(100);
               //发射消息机制,空消息
                handler.sendEmptyMessage(0);
               }
    
    
   }
  }).start();
  
  
 }

}

今晚的小火箭就实现了,最难理解的是矩形的使用,只有能理解到矩形的用法,应该问题不大了。晚安。



小火箭升空动画大全解相关推荐

  1. android桌面小火箭升空动画

    1 public class MainActivity extends Activity { 2 @Override 3 protected void onCreate(Bundle savedIns ...

  2. 火箭月亮html5游戏,HTML5 svg和CSS3炫酷火箭升空动画特效

    这是一款HTML5 svg和CSS3炫酷火箭升空动画特效.该特效的火箭使用SVG来实现,并通过CSS3动画来实现火箭的动画特效. 使用方法 HTML结构 CSS样式 body { background ...

  3. Android开发实战《手机安全卫士》——7.“高级工具”模块结尾 小火箭动画

    文章目录 1.高级工具--Toast提示框的双击事件 2.高级工具--服务中处理Toast提示框的拖拽事件 3.拓展功能--小火箭需求分析 4.拓展功能--小火箭的业务实现 1.高级工具--Toast ...

  4. Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果

    功能分析:  1.小火箭游离在activity之外,不依附于任何activity,不管activity是否开启,不影响小火箭的代码逻辑,所以小火箭的代码逻辑是要写在服务中:  2.小火箭挂载在手机窗体 ...

  5. 拖拽升空的Android小火箭

    先上演示效果 1.MainActivity 主布局就两个Button按钮 :一开启.二关闭 就不贴主布局xml了 因为小火箭是游离在activity之外的,所以不能依赖activity的生命周期 需要 ...

  6. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画

    [需求分析] 最近要实现一个类似于加速火箭移动的动画,需要带有位置移动和透明度转变的动画.类似于从A到B发生位移动画,且加速小火箭主键显示.而从B到C发生位移动画,且加速小火箭逐渐变暗消失.实现效果如 ...

  7. android 进度图表,Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...

    [实例简介] 主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效果(仿微信) 气温趋势图 [实例截图] [核心代码] ui_animation └── ui_anima ...

  8. Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...

    最近时间比较充裕一些,总结了下几个项目用到的ui效果,在这边共享给大家,也给自己做个记录(后面会有demo贴出).  主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效 ...

  9. Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)

    最近时间比较充裕一些,总结了下几个项目用到的ui效果,在这边共享给大家,也给自己做个记录(后面会有demo贴出).  主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效 ...

最新文章

  1. Vs2005+VSS 2005 老是出问题
  2. 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )
  3. 使用OpenCV进行图像创建、保存和复制
  4. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金
  5. 使用模板引擎artTemplate的几个问题总结
  6. IBM DS300 安装
  7. Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
  8. csv导入mysql php实现_PHP实现csv文件导入mysql数据库的方法
  9. mysql5.3.4 mac 配置_Mac下安装与配置MySQL
  10. SAP License:作业费用分割均分常见原因
  11. CentOS上安装man手册
  12. 华硕老毛子(Padavan)——校园网锐捷(Ruijie)认证路由器开机启动设置(开机脚本设置)
  13. 7教程统计意义_SPSS混合线性模型在生物医药统计中的应用——杏花开生物医药统计...
  14. Win10预览版之BUG
  15. 51个 Scratch 趣味小游戏(源码)
  16. 项目做PC端页面采用rem适配的使用步骤
  17. idea主菜单栏(main menu)消失解决办法,无需重启
  18. 生成一个16位的随机数字
  19. 讨论下2018年的北京房市(长文慎入)
  20. sa6155p以太网卡驱动emac-dwc-eqos

热门文章

  1. Opengl ES系列学习--顶点属性、顶点数组和缓冲区对象
  2. 美国原装二手keysight E4980A(安捷伦)2MHZ LCR表
  3. 微软用翻译软件制作Windows中文版?
  4. 安装fbterm解决ffy下的中文乱码
  5. 解决Android编译时出现的java.lang.UnsatisfiedLinkError问题!
  6. 看视频学编程之骑士飞行棋—自己做(单机版)
  7. 02深度解析Spring Cloud Ribbon---LoadBalancerAutoConfiguration拦截器注入
  8. 最新优达学城Udacity优惠码,另有双十一福利,最高7.8折优惠
  9. IT行业人才缺口大,薪资福利待遇都很好,但应该怎么学习呢?
  10. 2021安徽计算机二级报名时间,2021年3月安徽计算机二级报名时间|网上报名入口【12月29日开通】...