標籤:
1.之前我編寫的代碼是如下:
1 package com.himi.vibrate; 2 3 import android.app.Activity; 4 import android.app.Service; 5 import android.content.res.AssetManager; 6 import android.graphics.Typeface; 7 import android.os.Bundle; 8 import android.os.Vibrator; 9 import android.view.View;10 import android.view.View.OnClickListener;11 import android.widget.Button;12 13 public class MainActivity extends Activity implements OnClickListener {14 private Button btnLow;15 private Button btnNormal;16 private Button btnFast;17 18 Vibrator vibrator;19 20 @Override21 public void onCreate(Bundle savedInstanceState) {22 super.onCreate(savedInstanceState);23 setContentView(R.layout.activity_main);24 25 vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);26 27 btnLow = (Button) findViewById(R.id.btnlow);28 btnNormal = (Button) findViewById(R.id.btnnormal);29 btnFast = (Button) findViewById(R.id.btnfast);30 //下面這五行代碼是實現button上面的文字顯示楷體,不用理會31 32 AssetManager mgr = getAssets();33 Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf");34 35 btnLow.setTypeface(tf);36 btnNormal.setTypeface(tf);37 btnFast.setTypeface(tf);38 39 }40 41 @Override42 public void onClick(View v) {43 if (v.equals(btnLow)) {44 vibrator.vibrate(new long[] {1000,30,100,1000},0);45 }46 if (v.equals(btnNormal)) {47 48 vibrator.vibrate(new long[] {800,40,400,30},0);49 }50 if (v.equals(btnFast)) {51 vibrator.vibrate(new long[] {30,100,20,50},0);52 }53 54 }55 56 protected void onStop() {57 if(null!=vibrator){58 vibrator.cancel();59 }60 super.onStop();61 }62 }
2.後來才知道原來問題是如此簡單,修改完的代碼如下:
1 package com.himi.vibrate; 2 3 import android.app.Activity; 4 import android.app.Service; 5 import android.content.res.AssetManager; 6 import android.graphics.Typeface; 7 import android.os.Bundle; 8 import android.os.Vibrator; 9 import android.view.View;10 import android.view.View.OnClickListener;11 import android.widget.Button;12 13 public class MainActivity extends Activity implements OnClickListener {14 private Button btnLow;15 private Button btnNormal;16 private Button btnFast;17 18 Vibrator vibrator;19 20 @Override21 public void onCreate(Bundle savedInstanceState) {22 super.onCreate(savedInstanceState);23 setContentView(R.layout.activity_main);24 25 vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);26 27 btnLow = (Button) findViewById(R.id.btnlow);28 btnNormal = (Button) findViewById(R.id.btnnormal);29 btnFast = (Button) findViewById(R.id.btnfast);30 31 AssetManager mgr = getAssets();32 Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf");33 34 btnLow.setTypeface(tf);35 btnNormal.setTypeface(tf);36 btnFast.setTypeface(tf);37 38 //之前沒有加這3條語句,震動服務是沒有響應的。後來發現這是文法沒有弄清楚,我就是個傻逼39 btnFast.setOnClickListener(this);//監聽當前MainActivity40 btnNormal.setOnClickListener(this);//監聽當前MainActivity41 btnLow.setOnClickListener(this);//監聽當前MainAcitivity42 43 }44 45 @Override46 public void onClick(View v) {47 if (v.equals(btnLow)) {48 vibrator.vibrate(new long[] {1000,30,100,1000},0);49 }50 if (v.equals(btnNormal)) {51 52 vibrator.vibrate(new long[] {800,40,400,30},0);53 }54 if (v.equals(btnFast)) {55 vibrator.vibrate(new long[] {30,100,20,50},0);56 }57 58 }59 60 61 protected void onStop() {62 if(null!=vibrator){63 vibrator.cancel();64 }65 super.onStop();66 }67 }
3.總結
這裡是MainAcitivity實現了OnClickListener介面,所以介面監聽功能是屬於當前MainActivity的,所以是要監聽當前MainActivity的:
文法格式如下:
public class MainActivity extends Activity implements OnClickListener {
………………
public void onCreate(Bundle savedInstanceState) {
…………
btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(this);//監聽當前Acitivity,當然這裡監聽的就是MainActivity
}
public void onClick(View v) {
if (v.equals(btn1)) {
…………
}
……………………
}
Android(java)學習筆記113:Android編寫代碼調用Vibrator震動功能,按下按鈕button始終沒有震動