跳转到主内容
极星编程网:以代码为星,赴技术山海!

Android实现微信摇一摇功能

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

1、初始化界面

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

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编程使用加速度传感器实现摇一摇功能及优化的方法详解Android实现iPhone晃动撤销输入功能 Android仿微信摇一摇功能Android利用传感器仿微信摇一摇功能Android实现摇一摇功能Android利用传感器实现微信摇一摇功能Android 微信摇一摇功能实现详细介绍android 类似微信的摇一摇功能实现思路及代码Android实现摇一摇简单功能

相关文章