模仿ofo小黄人眼睛跟随手机移动
先上ofo效果图
模仿图
自己为小黄人增加了墨镜
实现原理很简单,就是根据传感器控制控件的移动。
上代码:
实例化传感器管理器对象,并实现传感器监听:
public class MainActivity extends AppCompatActivity implements SensorEventListener {SensorManager sensorManager;//传感器管理器对象Sensor orientation,light;//方向传感器,光照传感器ImageView iv_eyes;//眼睛LinearLayout ll_glasses;//眼镜@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorManager = (SensorManager) getSystemService(this.SENSOR_SERVICE);orientation = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);light=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);iv_eyes= (ImageView) findViewById(R.id.iv_eyes);ll_glasses= (LinearLayout) findViewById(R.id.ll_glasses);
在传感器监听实现我们的业务:
//传感器监听@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {//给光照传感器设置达到700换墨镜if(sensorEvent.sensor.getType() == Sensor.TYPE_LIGHT){// values值为225.0 0.0 0.0,第一个就是光照强度float[] values = sensorEvent.values;if(values[0]>700){ll_glasses.setVisibility(View.VISIBLE);}else{ll_glasses.setVisibility(View.INVISIBLE);}}//给方向传感器设置转动眼睛if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) {float[] values = sensorEvent.values;
// values[0]:该值表示方位,也就是手机绕着Z轴旋转的角度。可以利用这个特性来实现电子罗盘
// values[1]:当手机绕着X轴倾斜时该值发生变化。手机顶部抬起值会变小,底部反之。values[1]的取值范围是-180≤values[1]≤180。
// values[2]:表示手机沿着Y轴的滚动角度。手机右侧抬起值变大,左侧反之。取值范围是-90≤values[2]≤90。
// 超过阈值就不做处理,以防眼睛越出范围if(values[1]>40||values[1]<-20||values[2]>35||values[2]<-30){return;}change(values[2]-x,values[1]-y);x=values[2];y=values[1];}
眼睛转动动画:
//转动眼睛属性动画
private void change(float x,float y){//X方向移动ObjectAnimator x_anim = ObjectAnimator.ofFloat(iv_eyes, "x",iv_eyes.getX(), iv_eyes.getX()-x);//Y方向移动ObjectAnimator y_anim = ObjectAnimator.ofFloat(iv_eyes, "y",iv_eyes.getY(), iv_eyes.getY()-y);x_anim.setDuration(100);y_anim.setDuration(100);x_anim.start();y_anim.start();
}
在生命周期里对传感器进行注册和注销:
//转动眼睛属性动画
private void change(float x,float y){//X方向移动ObjectAnimator x_anim = ObjectAnimator.ofFloat(iv_eyes, "x",iv_eyes.getX(), iv_eyes.getX()-x);//Y方向移动ObjectAnimator y_anim = ObjectAnimator.ofFloat(iv_eyes, "y",iv_eyes.getY(), iv_eyes.getY()-y);x_anim.setDuration(100);y_anim.setDuration(100);x_anim.start();y_anim.start();
}
项目下载:
解压导入module,修改compileSdkVersion和buildToolVersion和你的AS一致就ok了
demo下载地址
模仿ofo小黄人眼睛跟随手机移动相关推荐
- 小黄人眼睛跟随鼠标移动
小黄人眼睛跟随鼠标移动 教程地址:原文地址(YouTube) B站教程:原文转载(bilibili) 两个视频的内容相同,第二个为转载 效果图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存 ...
- 仿新版ofo共享单车小黄人动态效果
前言 最近升级小黄车到最新版本,发现ofo与小黄人合作,生产了一批小黄人版小黄车,甚是可爱-,并且App的界面也进行了相应的效果改变,用车按钮变成了小黄人的头像,小黄人的眼睛还可以跟随设备的倾斜进行转 ...
- 微信小程序相关三、css写小黄人
小程序上课第三天,因为今天院里有活动,所以没去上课,第四天上午又因为要召开入党转正大会,又耽误了一上午,下午去上课,要了资料.这两天讲了一些零零碎碎的东西,做的实例有上面这个小黄人 都是用的css,基 ...
- 纯CSS3画出小黄人并实现动画效果
前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的 ...
- IOS绘制小黄人,对绘图知识的一个练习
IOS绘制小黄人,对绘图知识的一个练习 #define kTopX rect.size.width * 0.5 #define kTopRadius 80 #define kTopY 260// // ...
- 绘制半圆_Android Canvas 绘制小黄人
❝ 学习往往是枯燥的,如果能用一个有趣 Demo 来学习和练习技术,那对知识的掌握就会更牢固.我在学习 Canvas 绘制 API 的时候就是这样做的. ❞ 截图镇楼 效果图 我觉得这个绘制小黄人的自 ...
- la环球乐园里的机器人_北京环球度假区发布小黄人乐园主题视频,抢鲜感受未来的欢乐体验...
记者 | 底伊乐 编辑 | 汤威 继北京环球度假区发布了城市大道特色亮点后,7月30日,北京环球度假区又发布了小黄人乐园主题视频. 作为北京环球影城七大主题景区之一,小黄人乐园将于2021年北京环球度 ...
- Python小黄人绘制
Python小黄人绘制 使用python turtle库绘制小黄人 附上各坐标点的坐标图 完整代码: import turtle as t # 初始化 t.setup(800,800) t.pen ...
- 黄蓝专场之 | ofo小黄车的执念与博弈
文章来源:新浪科技 ID:techsina 内容经授权发布 20多天前,ofo小黄车CEO戴威现身北大光华论坛.在近15分钟的演讲中,这位身披红巾.意气风发的90后师兄,与在场近千名学子分享了&quo ...
最新文章
- Oracle后台进程
- 无法使用BIPublisher开发报表
- 项目管理概述学习记录(二)
- 计算机网络word文档,计算机网络word.doc
- Android使用C/C++来保存密钥
- NoSQL之【Redis】学习(二):配置说明
- 精选| 2021年9月R新包推荐(第58期)
- python3重写new方法_Python 3.8 新功能一览
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
- 我是学Java的,为什么要我装JDK
- 救人无数七个心理寓言
- Cannot connect to the database. –Error connecting to database.
- DSP课设项目(ICETEK-VC5509-EDU)
- 司空见惯 - 会议室名称
- wsimport简单实现WebService
- Python3不存在raw_input( )了
- JPA实体中数据库生成ID的最终指南1
- 这部史诗级大片,燃到爆!
- React / Vue 前后端分离项目实现微信分享教程
- 面试心得---按时交付代码的重要性
热门文章
- Antlr 4语法与空格
- 易优插件-易优CMS必备插件免费
- 单列集合系列之List集合的初了解
- python控制继电器开关_TPYBoardV102继电器使用教程
- win11系统点开图片几秒后就显示“此处没有任何要显示的内容
- github clone报错error: RPC failed; result=56, HTTP code = 200
- vue高德单条(可批量)路线规划+单条(可批量)路线带途径节点marker+单条(可批量)路线分段渲染各颜色
- ai怎么渐变颜色_Illustrator如何调渐变颜色 调渐变颜色方法分享
- 档案OCR识别SDK开发包
- G-sensor的完全校准