touch:按下时震动,松开时停止

实现按下去震动,松开停止。

####1、监听某一组件的touch事件

这里写图片描述

package com.example.lumeng.myapplication;

import android.content.Context;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
    TextView txv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txv=(TextView) findViewById(R.id.vibratore);
        txv.setOnTouchListener(this);
    }

    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        Vibrator vb=(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        //按下文字
        if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
            vb.vibrate(new long[]{0,100,1000,100},2); //表示按下时每秒震动0.1秒,不断重复
          //  vb.vibrate(5000); //震动5s
        }
        else if(motionEvent.getAction()==MotionEvent.ACTION_UP){
            vb.cancel(); //停止震动
        }
        return true;
    }
}

####2、实现整体屏幕的触动事件

package com.example.lumeng.myapplication;

import android.content.Context;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity  {
    TextView txv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }

    @Override
    public boolean onTouchEvent(MotionEvent motionEvent) {
        Vibrator vb=(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        //按下文字
        if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
            vb.vibrate(new long[]{0,100,1000,100},2); //表示按下时每秒震动0.1秒,不断重复
          //  vb.vibrate(5000); //震动5s
        }
        else if(motionEvent.getAction()==MotionEvent.ACTION_UP){
            vb.cancel(); //停止震动
        }
        return true;
    }
}

类本身内建了touch监听功能,直接调用onTouchEvent()方法。

####3、添加权限
AndroidManifest.xml中添加VIBRATE权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lumeng.myapplication">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

文献参考:
android app开发入门 施威铭 编著

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值