Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)
1. 之前我编写的代码是如下:
package com.himi.vibrate; import android.app.Activity;
import android.app.Service;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
private Button btnLow;
private Button btnNormal;
private Button btnFast; Vibrator vibrator; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE); btnLow = (Button) findViewById(R.id.btnlow);
btnNormal = (Button) findViewById(R.id.btnnormal);
btnFast = (Button) findViewById(R.id.btnfast);
//下面这五行代码是实现button上面的文字显示楷体,不用理会 AssetManager mgr = getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf"); btnLow.setTypeface(tf);
btnNormal.setTypeface(tf);
btnFast.setTypeface(tf); } @Override
public void onClick(View v) {
if (v.equals(btnLow)) {
vibrator.vibrate(new long[] {1000,30,100,1000},0);
}
if (v.equals(btnNormal)) { vibrator.vibrate(new long[] {800,40,400,30},0);
}
if (v.equals(btnFast)) {
vibrator.vibrate(new long[] {30,100,20,50},0);
} } protected void onStop() {
if(null!=vibrator){
vibrator.cancel();
}
super.onStop();
}
}
2. 后来才知道原来问题是如此简单,修改完的代码如下:
package com.himi.vibrate; import android.app.Activity;
import android.app.Service;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
private Button btnLow;
private Button btnNormal;
private Button btnFast; Vibrator vibrator; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE); btnLow = (Button) findViewById(R.id.btnlow);
btnNormal = (Button) findViewById(R.id.btnnormal);
btnFast = (Button) findViewById(R.id.btnfast); AssetManager mgr = getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf"); btnLow.setTypeface(tf);
btnNormal.setTypeface(tf);
btnFast.setTypeface(tf); //之前没有加这3条语句,振动服务是没有响应的。后来发现这是语法没有弄清楚,我就是个傻逼
btnFast.setOnClickListener(this);//监听当前MainActivity
btnNormal.setOnClickListener(this);//监听当前MainActivity
btnLow.setOnClickListener(this);//监听当前MainAcitivity } @Override
public void onClick(View v) {
if (v.equals(btnLow)) {
vibrator.vibrate(new long[] {1000,30,100,1000},0);
}
if (v.equals(btnNormal)) { vibrator.vibrate(new long[] {800,40,400,30},0);
}
if (v.equals(btnFast)) {
vibrator.vibrate(new long[] {30,100,20,50},0);
} } protected void onStop() {
if(null!=vibrator){
vibrator.cancel();
}
super.onStop();
}
}
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震动功能(Bug:按下按钮button始终没有震动)的更多相关文章
- Android开发学习笔记-关于Android的消息推送以及前后台切换
下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...
- JAVA学习笔记--方法中的参数调用是引用调用or值调用
文献来源:<JAVA核心技术卷Ⅰ>,第4章第5节 (没有相关书籍的可看传送门) ps:测试demo因为偷懒,用的是String对象 结论:Java使用的是对象的值引用.即将任何对象所在内存 ...
- Android 数字签名学习笔记
Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android:日常学习笔记(8)———探究UI开发(5)
Android:日常学习笔记(8)———探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...
- Android:日常学习笔记(7)———探究UI开发(4)
Android:日常学习笔记(7)———探究UI开发(4) UI概述 View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...
- Android:日常学习笔记(8)———探究UI开发(3)
Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...
随机推荐
- HDU-4750 Count The Pairs 最小生成树,并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:Q个询问t,求在一个无向图上有多少对点(i,j)满足 i 到 j 的所有路径上的最长边的最 ...
- ORM 是一种讨厌的反模式
本文由码农网 – 孙腾浩原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! (“Too Long; Didn’t Read.”太长不想看,可以看这段摘要 )ORM是一种讨厌的反模式,违背 ...
- Cocos2d-x 对于中文的支持-----iconv库
Cocos2d-x 对于中文的支持-----iconv库 转自:http://momowing.diandian.com/post/2013-01-16/40047183777 Jetion: 我们在 ...
- ecstore b2b2c 商城页面伪静态代码 及相关注意事项
一下代码需要添加到 nginx.conf配置文件的server块,阿里云虚拟机一般在conf文件夹下建立vhost文件夹,把server块放进去,然后 在nginx.conf使用include 包含进 ...
- Java IO (3) - Reader
Java IO (3) - Reader 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理上分为字符流 ...
- mysql从一个表中拷贝数据到另一个表中sql语句
这一段在找新的工作,今天面试时,要做一套题,其中遇到这么一句话,从一个表中拷贝所有的数据到另一个表中的sql是什么? 原来我很少用到,也没注意过这个问题,面试后我上网查查,回来自己亲手写了写,测试了下 ...
- ActiveMQ学习笔记(二) JMS与Spring
上文可见,JMS Native API使用起来不是特别方便.好在Spring提供了很好的JMS支持. (一)配置ConnectionFactory 如果使用连接池的话,不要忘记activemq-poo ...
- jq倒计时
var referTime = 5; setInterval("refer('#show')", 1000); function refer(obj){ if(referTime ...
- WCF序列化与反序列化问题
转自:http://www.cnblogs.com/wangweimutou/p/4505447.html WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的.比如上一篇讲解的Mess ...
- VS 2012单元测试和测试资源管理器
时间:2012-08-27 17:29 来源:张善友 博客园 字体:[大 中 小] 现在您可以在您的项目当中自行选择 NUnit 或是 xUnit 之类的套件. 而且这次的测试资源管理器也完全以”信息 ...