您的位置:首页 > 移动开发 > Android开发

Android开发-按钮的点击和长按-步骤方法

2016-07-21 14:52 417 查看
一、XML布局

    在activity_main.xml中适当位置添加Button组件。

<Button
android:id="@+id/btn_mid"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/btn_mid"/>


二、设置监听

    在OnCreate()中找到Button并添加点击和长按的监听事件。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btmid = (Button)findViewById(R.id.btn_mid);

btmid.setOnTouchListener(new MidOnTouchListener());
}


三、定义监听事件

class MidOnTouchListener implements View.OnTouchListener {
private int long_pressed = 0;<span style="white-space:pre">	</span>// 长按标志符

@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){<span style="white-space:pre">	</span>// 按钮被按下
// 启动一个线程
Thread t = new Thread() {
@Override
public void run() {
super.run();
try {
Thread.sleep(250);<span style="white-space:pre">	</span>// 超过指定时长,判断为长按
}catch (InterruptedException e)
{
e.printStackTrace();
}
// 线程未被打断
if(long_pressed == 0) {
long_pressed = 1;   // 标识符置位
hd.sendEmptyMessage(111);   // 发送消息到Handler,执行长按按下对应的方法
}else {
long_pressed = 0;
}
}
};
t.start();
}
if(event.getAction() == MotionEvent.ACTION_UP){
if(long_pressed == 0) { // 标识符未置位
long_pressed = -1;
// TODO: 执行点击对应的方法
}else if(long_pressed == 1) {   // 标识符已置位,则为长按
// TODO: 执行长按释放对应的方法
long_pressed = 0;
}
}
return false;
}
}


四、定义Handler

    1、Handler 声明

private Handler hd;
    2、Handler 定义

hd = new Handler() {
public void handleMessage(Message msg)
{
super.handleMessage(msg);
if(msg.what == 111) {
// TODO: 执行长按按下对应的方法
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息