package com.cheng.utils.view;
import android.app.Service;
import android.content.Context;
import android.os.Vibrator;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.CycleInterpolator;
import android.view.animation.TranslateAnimation;
/**
* View震动效果帮助类
* 需要加上震动的权限
* <uses-permission android:name="android.permission.VIBRATE" />
*/
public class SharkAnimHelper {
private static final int kSHAKE_DURATION = 300;
private static final int kCYCLE_NUM = 8;
private Animation mSharkAnimation; // 震动动画
private CycleInterpolator mCycleInterpolator; // 插值器
private Vibrator mShakeVibrator; // 振动器
private static final SharkAnimHelper sInstance = new SharkAnimHelper();
private SharkAnimHelper() {
}
public static SharkAnimHelper getInstance(Context context) {
return sInstance;
}
public void shake(Context context, View view) {
if (context==null || view==null) return;
if (mShakeVibrator == null) {
// 初始化振动器
mShakeVibrator = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE);
}
if (mSharkAnimation == null) {
// 初始化震动动画
mSharkAnimation = new TranslateAnimation(0, 10, 0, 0);
mSharkAnimation.setDuration(kSHAKE_DURATION);
}
if (mCycleInterpolator == null) {
mCycleInterpolator = new CycleInterpolator(kCYCLE_NUM);
mSharkAnimation.setInterpolator(mCycleInterpolator);
}
view.startAnimation(mSharkAnimation);
mShakeVibrator.vibrate(new long[]{0, 500}, -1);
}
}