Android应用中实现点击按钮震动

来源:互联网 发布:福州软件测试招聘 编辑:程序博客网 时间:2024/06/05 22:57

项目中需要实现点击应用中的按钮,有震动效果。震动效果可以在设置中进行关闭。

具体实现如下。

编写震动帮助类:VibrateHelp.java


import android.content.Context;import android.os.Vibrator;/** * 震动帮助类 * androidManifest.xml中加入 以下权限 * <uses-permission android:name="android.permission.VIBRATE" /> */public class VibrateHelp {private static Vibrator vibrator;/** * 简单震动 * @param context     调用震动的Context * @param millisecond 震动的时间,毫秒 */@SuppressWarnings("static-access")public static void vSimple(Context context, int millisecond) {vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);vibrator.vibrate(millisecond);}/** * 复杂的震动 * @param context 调用震动的Context * @param pattern 震动形式 * @param repeate 震动的次数,-1不重复,非-1为从pattern的指定下标开始重复 */@SuppressWarnings("static-access")public static void vComplicated(Context context, long[] pattern, int repeate) {vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);vibrator.vibrate(pattern, repeate);}/** * 停止震动 */public static void stop() {if (vibrator != null) {vibrator.cancel();}}}



下面自定义实现按钮单击震动类:ViewClickVibrate.java


import android.view.View;import android.view.View.OnClickListener;public class ViewClickVibrate implements OnClickListener{/** 按钮震动时间 */private final int VIBRATE_TIME = 60;@Overridepublic void onClick(View v) {// TODO 根据设置中的标记判断是否执行震动VibrateHelp.vSimple(v.getContext(), VIBRATE_TIME);}}



最后,在给按钮设置监听时,使用类ViewClickVibrate,如下所示:MainActivity.java

import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {Button btn1;Button btn2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1 = (Button) findViewById(R.id.button1);btn2 = (Button) findViewById(R.id.button2);btn1.setOnClickListener(new ViewClickVibrate() {public void onClick(View v) {super.onClick(v);// TODO}});btn2.setOnClickListener(new ViewClickVibrate() {public void onClick(View v) {super.onClick(v);// TODO}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}


也可以自定义其他控件的单击事件,实现单击震动效果,类似上面改之即可。


1 0
原创粉丝点击