Android 事件处理(—)(附源码)-阿里云开发者社区

开发者社区> 科技小先锋> 正文

Android 事件处理(—)(附源码)

简介:
+关注继续查看

(一) 事件使我们在于UI交互式发生的,我们点击一个按键时,可能就已经除非好几个事件,例如我们点击数字键“0”,他会涉及到按下事件,和一个弹起(松开)事件,在我们android中还可能涉及到触摸屏事件,所以在android系统中,事件是作为常用的功能之一;

android下,事件的发生是在监听器下进行,android系统可以响应按键事件和触摸屏事件,事件说明如下:

onClick(View v) 一个普通的点击按钮事件

boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)用于在多个事件连续时发生,用于按键重复,必须重载@Override实现

boolean onKeyDown(int keyCode,KeyEvent event) 用于在按键进行按下时发生

boolean onKeyUp(int keyCode,KeyEvent event 用于在按键进行释放时发生

onTouchEvent(MotionEvent event)触摸屏事件,当在触摸屏上有动作时发生

boolean onKeyLongPress(int keyCode, KeyEvent event)当你长时间按时发生(疑问?)

(二) 首先我们建立一个android项目,当项目建立好之后,直接在默认的main.xml文件中拖放一个button 按钮,其他的不需要在这里做什么了,然后就可以到命名好的.java文件中进行先关代码的书写;

1.     对要使用的控件进行引用,当然你也可以用到的时候再在相关类控件添加引用

import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

2.     获得相关对象,设置控件监听器

Button button=(Button) findViewById(R.id.button1);

        //设置监听

        button.setOnClickListener(new Button.OnClickListener()

        {

           @Override

           public void onClick(View v) {

              // TODO Auto-generated method stub

              DisplayToast("事件触发成功");

           }           

        });

请注意这里末尾使用的是分号“;这里就是获得button的实例,然后对他进行监听,当用户点击时就会发生onClick事件,这里还用到一个方法,就是显示一个短消息,在屏幕停留几秒钟就会自动消失,其方法如下:

public void DisplayToast(String str)

    {

    Toast.makeText(this, str, Toast.LENGTH_SHORT).show();

    }

当然你也可以设置显示长点,即Toast.LENGTH_SHORT改为Toast.LENGTH_LONG

3.     当按键按下是发生的事件

public boolean onKeyDown(int keyCode,KeyEvent event)

    {

    switch(keyCode)

    {

    case KeyEvent.KEYCODE_0:

        DisplayToast("你按下数字键0");

        break;

    case KeyEvent.KEYCODE_DPAD_CENTER:

        DisplayToast("你按下中间键");

        break;sss

    case KeyEvent.KEYCODE_DPAD_DOWN:

        DisplayToast("你按下下方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_LEFT:

        DisplayToast("你按下左方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_RIGHT:

        DisplayToast("你按下右方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_UP:

        DisplayToast("你按下上方向键");

           break;

    case KeyEvent.KEYCODE_ALT_LEFT:

        DisplayToast("你按下组合键alt+←");

        break;

    }

    return super.onKeyDown(keyCode, event);

    }

这里所有的keyCode都囊括了,这只是几个比较典型的例子,效果如下:







 

4.         当按键弹起时发生的事件,代码如下:

public boolean onKeyUp(int keyCode,KeyEvent event)

    {

    switch(keyCode)

    {

    case KeyEvent.KEYCODE_0:

        DisplayToast("松开数字键0");

        break;

    case KeyEvent.KEYCODE_DPAD_CENTER:

        DisplayToast("松开中间键");

        break;

    case KeyEvent.KEYCODE_DPAD_DOWN:

        DisplayToast("松开下方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_LEFT:

        DisplayToast("松开左方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_RIGHT:

        DisplayToast("松开右方向键");

        break;

    case KeyEvent.KEYCODE_DPAD_UP:

        DisplayToast("松开上方向键");

           break;

    case KeyEvent.KEYCODE_ALT_LEFT:

        DisplayToast("松开组合键alt+←");

        break;

    }

    return super.onKeyUp(keyCode, event);

    }

效果与上图类似,只是文字不一样

5.         触摸屏事件,当用手或者用笔在触摸屏上做动作是发生,相关代码如下:

public boolean onTouchEvent(MotionEvent event)

    {

    int iAction=event.getAction();

    if(iAction==MotionEvent.ACTION_MOVE)

    {

        DisplayToast("你在触摸屏上进行了滑动");

    }

    else

    {

        return false;

    }

    return super.onTouchEvent(event);

    }

6.         连续点击按键时发生的事件

Publicboolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)

{

 Return super.onKeyMultiple(keyCode, repeatCount, event);

}

 整体效果还不错,又向android迈进一步!!!



本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/510230,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
哈工大自然语言处理ltp在windows10下的源代码安装时builtin_converters.cpp报错
安装LTP的环境要求比较复杂,首先cmake,VS2010等等。今天要说的时编译过程中出现的一个坑,python setup.py install,编译到后面会报错。直接上错误代码: patch\libs\python\src\converter\builtin_converters.
3241 0
基于jQuery左右滑动切换特效 附源码
分享一款基于脚jQuery左右滑动切换特效。这是一款鼠标点击左右箭头按钮图片滚动切换,鼠标移到图片上显示透明边框特效。   效果图如下:   废话不多说,代码奉上!   html代码: 1 2 3 4 ...
1178 0
android 屏蔽home 处理home
引用:http://my.oschina.net/chen106106/blog/51701 package com.test.qiao;      import android.app.Activity;   import android.
641 0
Android学习之图像的处理
Android系统提供了Matrix对象控制图形进行平移、旋转、缩放、倾斜等操作,对View组件也可以进行平移、旋转、缩放等。 import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; i
1046 0
分布式事务中间件 Fescar—RM 模块源码解读
前言 在SOA、微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点。我所在的团队也遇到了这个问题,为解决这个问题上,团队采用的是阿里开源的分布式中间件Fescar的解决方案,并详细了解了Fescar内部的工作原理,解决在使用Fescar中间件过程中的一些疑虑的地方,也为后续团队在继续使用该中间件奠定理论基础。
24312 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载