Android手机震动抖动效果的实现

mip33 4年前

(1)布局文件如下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context=".MainActivity" >        <EditText          android:id="@+id/et_text"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignParentLeft="true"          android:layout_alignParentRight="true"          android:layout_alignParentTop="true"          android:layout_marginTop="16dp"          android:ems="10" >            <requestFocus />      </EditText>        <Button          android:id="@+id/btn_submit"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignLeft="@+id/et_text"          android:layout_below="@+id/et_text"          android:layout_marginTop="38dp"          android:text="提交" />    </RelativeLayout>

(2)MainActivity.java

package com.example.test11;    import android.app.Activity;  import android.os.Bundle;  import android.os.Vibrator;  import android.text.TextUtils;  import android.view.View;  import android.view.View.OnClickListener;  import android.view.animation.Animation;  import android.view.animation.AnimationUtils;  import android.widget.Button;  import android.widget.EditText;  import android.widget.Toast;    public class MainActivity extends Activity {        private EditText et_text;      private Button btn_submit;      /**       * 手机振动器       */      private Vibrator vibrator;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          et_text = (EditText) this.findViewById(R.id.et_text);          btn_submit = (Button) this.findViewById(R.id.btn_submit);            // 震动效果的系统服务          vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);            btn_submit.setOnClickListener(new OnClickListener() {              String text = et_text.getText().toString().trim();                public void onClick(View v) {                  if (TextUtils.isEmpty(text)) {                      Toast.makeText(MainActivity.this, "内容为空", 0).show();                      Animation shake = AnimationUtils.loadAnimation(                              MainActivity.this, R.anim.shake);                      et_text.startAnimation(shake);                        /*                       * 震动的方式                       */                      // vibrator.vibrate(2000);//振动两秒                        // 下边是可以使震动有规律的震动   -1:表示不重复 0:循环的震动                      long[] pattern = { 200, 2000, 2000, 200, 200, 200 };                      vibrator.vibrate(pattern, -1);                  }              }          });      }  }

(3)使用到的两个动画文件如下:
cycle_7.xml
<?xml version="1.0" encoding="utf-8"?>  <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"      android:cycles="7" />

shake.xml

<?xml version="1.0" encoding="utf-8"?>  <translate xmlns:android="http://schemas.android.com/apk/res/android"      android:duration="1000"      android:fromXDelta="0"      android:interpolator="@anim/cycle_7"      android:toXDelta="10" />

(4)需要使用的权限:

 <uses-permission android:name="android.permission.VIBRATE" />

这个效果一般只有在真机上谁可以做到,不在上图展示。

来自:http://blog.csdn.net/xlgen157387/article/details/44679613