本文实例为大家分享了Android实现微信摇一摇功能的具体代码,供大家参考,具体内容如下

1、初始化界面

设置摇一摇界面的背景图片和摇动时的上下两半张图片

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.yyy.MainActivity"

android:background="@mipmap/shakehideimg_man2"

>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

>

android:id="@+id/img_up"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:background="@mipmap/shake_logo_up"

/>

android:id="@+id/img_down"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:background="@mipmap/shake_logo_down"

/>

2、Mainactivity - onCreate()

private ImageView imgDown;

private ImageView imgUp;

private SensorManager sensorManager;

private SensorEventListener sensorEventListener;

private Sensor accSensor;

private AnimationSet upAnimationSet;

private AnimationSet downAnimationSet;

private SoundPool soundPool;

private int soundId;

private Vibrator vibrator;

private boolean isYYY = false;

/*1.初始化页面

2.初始化数据

* 3.监听加速度变化(触发条件)

* 1.图片执行动画

* ***2.到服务器查询同一时间摇一摇的异性用户

* 2.播放音乐

* 3.振动

* **4.当你正在摇的时候(不能再摇动)

* */

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

initEvent();

//注册监听

sensorManager.registerListener(sensorEventListener,accSensor,SENSOR_DELAY_NORMAL);

}

3、初始化数据

private void initData() {

//先获得传感器管理器

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

//获得加速度传感器

accSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

//获得振动器

vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

//初始化声音池

soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

//初始化声音资源

soundId = soundPool.load(this,R.raw.awe,1);

//初始化动画

upAnimationSet = new AnimationSet(true);

TranslateAnimation upUpAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, -0.5f);

upUpAnimation.setDuration(500);

TranslateAnimation upDownAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, -0.5f,

Animation.RELATIVE_TO_SELF, 0);

upDownAnimation.setDuration(500);

//down动画在up动画之后执行

upUpAnimation.setStartOffset(500);

upAnimationSet.addAnimation(upUpAnimation);

upAnimationSet.addAnimation(upDownAnimation);

upAnimationSet.setDuration(1000);

upAnimationSet.setStartOffset(200);

//初始化动画

downAnimationSet = new AnimationSet(true);

TranslateAnimation downUpAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0);

downUpAnimation.setDuration(500);

TranslateAnimation downDownAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0.5f);

downDownAnimation.setDuration(500);

//down动画在up动画之后执行

downDownAnimation.setStartOffset(500);

downAnimationSet.addAnimation(downDownAnimation);

downAnimationSet.addAnimation(downUpAnimation);

downAnimationSet.setDuration(1000);

downAnimationSet.setStartOffset(200);

}

4、初始化事件 - 摇一摇

给加速度感应器设置监听

① 设置摇一摇的触发条件

② 播放动画

③ 播放音乐

④ 开启震动

private void initEvent() {

sensorEventListener = new SensorEventListener() {

/*

* 当传感器的值发生变化时的回调

* */

@Override

public void onSensorChanged(SensorEvent event) {

//Log.i("AAA", "onSensorChanged: ");

//设置触发摇一摇的条件

//获得x,y,z方向的变化

float[] values = event.values;

float valueX = values[0]; //空间中X的变化

float valueY = values[1]; //空间中Y的变化

float valueZ = values[2]; //空间中Z的变化

if(valueX > 15 || valueY > 15 || valueZ >15){//触发条件

if(!isYYY){

imgUp.startAnimation(upAnimationSet);

imgDown.startAnimation(downAnimationSet);

//播放音乐

soundPool.play(soundId,1,1,1,0,1);

//振动

vibrator.vibrate(new long[]{200,400,200,400,200,400,200,400},-1);

}

}

}

/*

*当传感器精度发生变化的回调

* */

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

};

upAnimationSet.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

isYYY = true;

}

@Override

public void onAnimationEnd(Animation animation) {

isYYY = false;

}

@Override

public void onAnimationRepeat(Animation animation) {

}

});

}

5、添加权限

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

android 微信摇一摇代码,Android实现微信摇一摇功能相关推荐

  1. android 微信设置圆角边框代码,Android编程实现圆角边框的方法

    本文实例讲述了Android编程实现圆角边框的方法.分享给大家供大家参考,具体如下: 设置边框圆角可以在drawable-mdpi目录里定义一个xml: android:topRightRadius= ...

  2. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  3. android建立电话拨号器代码,Android编写电话拨号器

    一.实现步骤 1.需要创建拨号意图 Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData ...

  4. android博学谷我的代码,Android项目实战系列—基于博学谷(四)我的模块(下)...

    由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 [ ] [我的界面]() [ ] [设置界面]() [x] [修改密码界面]() [x] [设置密保和找回密 ...

  5. 微信防撤回python代码_Python实现微信防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:"摇一摇"."漂流 ...

  6. 微信防撤回python代码_python实现微信消息防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:"摇一摇"."漂 ...

  7. 微信接口测试号 php代码,模拟测试微信接口暨微信开发试验代码

    要成为微信公众号(订阅号或服务号)的开发者,需要首先验证接口,这个可以在登录微信https://mp.weixin.qq.com后台后设置.但是我嫌麻烦,于是开发个接口类,包含验证函数(还有回复文本信 ...

  8. android和js交互的代码,Android与JS代码交互

    现如今,很多Android APP都要与JS进行交互,而WebView就是Android与JS交互的桥梁,日常中最常见Android和JS交互有:APP注册协议,APP里的文章,APP里的活动页,这都 ...

  9. android填空题界面的代码,Android 使用代码实现一个选词(拖拽)填空题

    封面 1.写在前面 在上一篇文章<Android 使用代码实现一个填空题>中,我们学习了如何实现一个填空题,今天继续接着上一篇文章的节奏,学习一下如何实现一个选词填空题,由于本文中用到了一 ...

  10. android手机通讯录备份还原代码,android手机通讯录备份还原代码

    最近想写段android程序玩玩. 开发环境 eclipse ,android2.2 开发环境搭建 1.先安装jdk 2.下载安装eclipse 3.下载安装android sdk 4.安装eclip ...

最新文章

  1. python操作mongodb之六自定义类型存储
  2. 玩转mini2440开发板之【编译u-boot提示没有规则可以创建“XX.o”需要的目标】
  3. MySQL weekday()函数
  4. zookeeper+kafka+logstash+elasticsearc+kibana
  5. 作者:司恩哲(1985-),男,现就职于中国人民银行征信中心数据部,主要研究方向为数据挖掘。...
  6. Windows安全不能靠本地管理员权限
  7. Android性能优化典范第一季
  8. 关于FP Spread for Web Forms 2.0.0.0
  9. 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数(day4)
  10. 开发环境配置(netbeans+ant迁移到eclipse+maven)
  11. kotlin之高阶函数
  12. SpringMVC (三)处理器映射器的配置和AbstractController的使用
  13. 2021-2022学期计划
  14. Part I. S2. 直觉模糊集理论
  15. Java入门基础第3天《使用记事本编写运行Java程序》
  16. 物联网ARM开发高级
  17. 坚果云 我的电脑图标_坚果云使用教程
  18. java 建立tlsv1.2报错_Java 7的javax.net.ssl.SSLHandshakeException
  19. 用四叉树管理散布在平面上的对象
  20. 两步验证 非双重认证

热门文章

  1. js关闭当前页面/关闭当前窗口/移动端 代码
  2. 【Python】出现SyntaxError: invalid syntax的原因总结
  3. 关于大数据的视频资料
  4. UX术语详解:任务流,用户流,流程图以及其它全新术语
  5. 【分享】北京社保查询API
  6. c++中获得对象类型 typeid 与 type_info
  7. Handlebars js模版
  8. tensorflow2.0之one_hot函数使用
  9. 大数据-什么是大数据?大数据的相关概念
  10. 如何构建自己的知识体系