搖一搖主要通過sensormanager
監聽手機,實現sensoreventlistener
,在onsensorchanged
去判斷,根據加速度來判斷搖晃的程度。
shakesensorlistener shakelistener = new shakesensorlistener();
sensormanager sensormanager = (sensormanager)getsystemservice(context.sensor_service);
private class shakesensorlistener implements sensoreventlistener
// 開始動畫
anim.start();
float values = event.values;
/** x : x軸方向的重力加速度,向右為正
* y : y軸方向的重力加速度,向前為正
* z : z軸方向的重力加速度,向上為正
*/float x = math.abs(values[0]);
float y = math.abs(values[1]);
float z = math.abs(values[2]);
//加速度超過19,搖一搖成功
if (x > 19 || y > 19 || z > 19)
},1000);}}
@override
public void onaccuracychanged(sensor sensor, int accuracy)
}複製**
如果手機一直在搖晃,會不停的呼叫onsensorchanged ,而我們只想要一次搖一搖的效果,所以加了isshake
欄位去判斷。 在一次搖一搖事件完成後置false,可以繼續搖一搖。
註冊監聽,同時別忘了取消註冊。
@override
protected void onresume
() @override
protected void onpause
() 複製**
搖一搖過程可以執行動畫效果。
objectanimator anim = objectanimator.offloat(imghand,"rotation",0f,45f,-30f,0f);
anim.setduration(500);
anim.setrepeatcount(valueanimator.infinite);
複製**
private void playsound(context context)
複製**
震動效果,這裡注意要在androidmanifest 檔案裡新增許可權
private void vibrate(long milliseconds)
複製**
一次搖一搖後,這裡在彈框消失後可繼續搖一搖。
private void showdialog
() });
window window = malertdialog.getwindow();
window.setbackgrounddrawable(new colordrawable(0x00000000));
}複製**
至此,一套搖一搖效果完成!
歡迎關注我的個人部落格:www.manjiexiang.cn/
android 搖一搖 震動 聲音效果
搖一搖主要通過sensormanager監聽手機,實現sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesensorlistener sensormanag...
android 搖一搖 震動 聲音效果
搖一搖主要通過sensormanager監聽手機,實現sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesensorlistener sensormanag...
android 搖一搖 震動 聲音效果
android 搖一搖 震動 聲音效果 搖一搖主要通過sensormanager監聽手機,實現 sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesenso...