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 中声明 ...
随机推荐
- 快速上手Android数据库操作
Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用,WM采用的也是SQLite3 关于过于.原理方面的东西在这篇文章里不会提到,但是 ...
- nodejs 5.2.0文档自翻译——HTTP模块
HTTP Class: http.Agent new Agent([options]) agent.destroy() agent.freeSockets agent.getName(options) ...
- Hierarchical cluster算法介绍
突然想记录几个聚类算法,由于实力有限就先介绍一下层次聚类算法(Hierarchical cluster algorithm),这个聚类算法思想简单,但实现起来感觉复杂度挺大:以前看过<集体智慧编 ...
- 【hbase】使用thrift with python 访问HBase
HBase 版本: 0.98.6 thrift 版本: 0.9.0 使用 thrift client with python 连接 HBase 报错: Traceback (most recent ...
- Calculating a bearing between points in location-aware apps
https://software.intel.com/en-us/blogs/2012/11/30/calculating-a-bearing-between-points-in-location-a ...
- BAT-使用BAT生成快捷方式
@( echo [InternetShortcut] echo URL=C:\Windows\System32\calc.exe echo IconIndex=0 echo IconFile=C:\W ...
- thymeleaf中的模板布局
一.包括模板片段: 1:定义和引用片段,我们经常会想要包含在模板片段来自其他模板.常见的用途是页脚.标题.菜单…; 为了做到这一点,Thymeleaf需要我们定义包含可用的片段,我们可以通过使用th: ...
- 咏南DATASNAP中间件提供免费使用了
咏南DATASNAP中间件提供免费使用了. 百度网盘分享: 链接: http://pan.baidu.com/s/1c06Ivp2 密码: dhhm
- Umbraco Forms 中的Recaptcha遇到的问题
在Umbraco Form中添加Recaptcha时,不能把它设置成Mandatory, 否则就会出错
- HL7及PIX相关的测试工具
最近在开发PIX项目时需要一些工具, 比如PIX各个Actor的测试工具, HL7消息的验证工具等等. 下面列下我找见的几个 必备工具. 1. http://hit-testing.nist.gov: ...