小火箭升空动画大全解
大家好,今晚给大家分享的是一个有趣的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();
}
}
今晚的小火箭就实现了,最难理解的是矩形的使用,只有能理解到矩形的用法,应该问题不大了。晚安。
小火箭升空动画大全解相关推荐
- android桌面小火箭升空动画
1 public class MainActivity extends Activity { 2 @Override 3 protected void onCreate(Bundle savedIns ...
- 火箭月亮html5游戏,HTML5 svg和CSS3炫酷火箭升空动画特效
这是一款HTML5 svg和CSS3炫酷火箭升空动画特效.该特效的火箭使用SVG来实现,并通过CSS3动画来实现火箭的动画特效. 使用方法 HTML结构 CSS样式 body { background ...
- Android开发实战《手机安全卫士》——7.“高级工具”模块结尾 小火箭动画
文章目录 1.高级工具--Toast提示框的双击事件 2.高级工具--服务中处理Toast提示框的拖拽事件 3.拓展功能--小火箭需求分析 4.拓展功能--小火箭的业务实现 1.高级工具--Toast ...
- Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果
功能分析: 1.小火箭游离在activity之外,不依附于任何activity,不管activity是否开启,不影响小火箭的代码逻辑,所以小火箭的代码逻辑是要写在服务中: 2.小火箭挂载在手机窗体 ...
- 拖拽升空的Android小火箭
先上演示效果 1.MainActivity 主布局就两个Button按钮 :一开启.二关闭 就不贴主布局xml了 因为小火箭是游离在activity之外的,所以不能依赖activity的生命周期 需要 ...
- [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
[需求分析] 最近要实现一个类似于加速火箭移动的动画,需要带有位置移动和透明度转变的动画.类似于从A到B发生位移动画,且加速小火箭主键显示.而从B到C发生位移动画,且加速小火箭逐渐变暗消失.实现效果如 ...
- android 进度图表,Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...
[实例简介] 主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效果(仿微信) 气温趋势图 [实例截图] [核心代码] ui_animation └── ui_anima ...
- Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)...
最近时间比较充裕一些,总结了下几个项目用到的ui效果,在这边共享给大家,也给自己做个记录(后面会有demo贴出). 主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效 ...
- Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)
最近时间比较充裕一些,总结了下几个项目用到的ui效果,在这边共享给大家,也给自己做个记录(后面会有demo贴出). 主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效 ...
最新文章
- Vs2005+VSS 2005 老是出问题
- 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )
- 使用OpenCV进行图像创建、保存和复制
- Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金
- 使用模板引擎artTemplate的几个问题总结
- IBM DS300 安装
- Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
- csv导入mysql php实现_PHP实现csv文件导入mysql数据库的方法
- mysql5.3.4 mac 配置_Mac下安装与配置MySQL
- SAP License:作业费用分割均分常见原因
- CentOS上安装man手册
- 华硕老毛子(Padavan)——校园网锐捷(Ruijie)认证路由器开机启动设置(开机脚本设置)
- 7教程统计意义_SPSS混合线性模型在生物医药统计中的应用——杏花开生物医药统计...
- Win10预览版之BUG
- 51个 Scratch 趣味小游戏(源码)
- 项目做PC端页面采用rem适配的使用步骤
- idea主菜单栏(main menu)消失解决办法,无需重启
- 生成一个16位的随机数字
- 讨论下2018年的北京房市(长文慎入)
- sa6155p以太网卡驱动emac-dwc-eqos
热门文章
- Opengl ES系列学习--顶点属性、顶点数组和缓冲区对象
- 美国原装二手keysight E4980A(安捷伦)2MHZ LCR表
- 微软用翻译软件制作Windows中文版?
- 安装fbterm解决ffy下的中文乱码
- 解决Android编译时出现的java.lang.UnsatisfiedLinkError问题!
- 看视频学编程之骑士飞行棋—自己做(单机版)
- 02深度解析Spring Cloud Ribbon---LoadBalancerAutoConfiguration拦截器注入
- 最新优达学城Udacity优惠码,另有双十一福利,最高7.8折优惠
- IT行业人才缺口大,薪资福利待遇都很好,但应该怎么学习呢?
- 2021安徽计算机二级报名时间,2021年3月安徽计算机二级报名时间|网上报名入口【12月29日开通】...