当然一个监听器可以处理多个View的触摸事件,因此多了一个View 参数。下面是一个小小的例子:我们知道一个当点击Button对象时,会调用onClickListener中的onClick函数,我们可以模拟一下这种效果。
- importandroid.app.Activity;
-
importandroid.os.Bundle;
-
importandroid.view.Gravity;
-
importandroid.view.MotionEvent;
-
importandroid.view.View;
-
importandroid.widget.Button;
-
importandroid.widget.Toast;
-
publicclassTouchButtonActivityextendsActivity{
- Buttonbutton1;
- TouchListenertl;
-
@Override
-
publicvoidonCreate(BundlesavedInstanceState){
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button1=(Button)findViewById(R.id.button1);
-
tl=newTouchListener();
- button1.setOnTouchListener(tl);
- }
-
classTouchListenerimplementsView.OnTouchListener{
-
privateinti=0;
-
@Override
-
publicbooleanonTouch(Viewv,MotionEventevent){
-
-
intaction=event.getAction();
- Toasttoast=Toast.makeText(getApplicationContext(),
-
"The"+event.toString()+"hasrecieved!",Toast.LENGTH_SHORT);
-
toast.setGravity(Gravity.CENTER,0,100*i);
- i++;
-
i=i%4;
- toast.show();
-
returnfalse;
- }
- }
- }
运行上面的代码,点击Button按钮会出现几个Toast提示框。实际上当我们点击View时,收到的是一个 事件序列。刚点击时会收到ACTION_DOWN, 触摸屏是很敏感的, 你还会收到几个ACTION_MOVE, 当手放开时会收到ACTION_UP;下面来点有意思的代码来处理不同的事件。其中手势终止时会会触发ACTION_CANCEL。
- importandroid.content.Context;
-
importandroid.graphics.Canvas;
-
importandroid.graphics.Color;
-
importandroid.graphics.Paint;
-
importandroid.util.AttributeSet;
-
importandroid.view.MotionEvent;
-
importandroid.view.View;
-
publicclassDotextendsView{
-
privatestaticfinalfloatRADIUS=40;
-
privatefloatx=40;
-
privatefloaty=40;
-
privatefloatinitialX;
-
privatefloatinitialY;
-
privatefloatoffsetX;
-
privatefloatoffsetY;
-
privatePaintbackgroundPaint;
-
privatePaintmyPaint;
-
publicDot(Contextcontext,AttributeSetattrs){
-
super(context,attrs);
-
backgroundPaint=newPaint();
- backgroundPaint.setColor(Color.BLUE);
-
myPaint=newPaint();
- myPaint.setColor(Color.YELLOW);
-
myPaint.setAntiAlias(true);
- }
-
@Override
-
publicbooleanonTouchEvent(MotionEventevent){
-
intaction=event.getAction();
-
switch(action){
-
caseMotionEvent.ACTION_DOWN:
- initialX=x;
- initialY=y;
- offsetX=event.getX();
- offsetY=event.getY();
-
break;
-
caseMotionEvent.ACTION_MOVE:
-
caseMotionEvent.ACTION_UP:
-
caseMotionEvent.ACTION_CANCEL:
- x=initialX+event.getX()-offsetX;
- y=initialY+event.getY()-offsetY;
-
break;
- }
- event.recycle();
-
return(true);
- }
-
@Override
-
publicvoiddraw(Canvascanvas){
-
intwidth=canvas.getWidth();
-
intheight=canvas.getHeight();
-
canvas.drawRect(0,0,width,height,backgroundPaint);
- canvas.drawCircle(x,y,RADIUS,myPaint);
- invalidate();
- }
- }
下面是mian.xml
- <?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:orientation="vertical"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
>
-
<com.tsiannian.gmail.dot.Dot
-
android:id="@+id/dot"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
/>
-
</LinearLayout>
相关推荐
android中处理各种触摸事件android中处理各种触摸事件android中处理各种触摸事件
在Android应用程序中,有一类特殊的消息,是专门负责与用户进行交互的,它们就是触摸屏和键盘等输入事件。触摸屏和键盘事件是统一由系统输入管理器InputManager进行分发的。也就是说,InputManager负责从硬件接收...
viewgroup view activity onTouch事件分发,Android中提供了ViewGroup、View、Activity三个等级的Touch事件处理。也就是说,这三个地方都有事件回调方法.
分析Android中OnTouch事件的分发处理,以及当两个组件重叠时,如果处理触摸事件的分发,解决触摸事件冲突问题。
在android手机屏幕上绘制图案,手势识别
android手势操作滑动效果触摸屏事件处理.pdf
Android面面观——Android事件处理下(按键、触摸屏
android 手势操作 滑动效果 触摸屏事件处理
界 处理触摸事件并使用2D图形的Android应用。 用户可以在屏幕上画出一个或多个圆圈。手指按下的时间越长,圆圈就越大。
因为本周打算写两篇博客,下一篇会写手势相关的,所以工程的名称是GestureDemo,大家不要见怪。
通过对Touch事件的几种状态处理完成照片的放大,缩小、拖拽等功能
摘要:Java源码,Android源码,触摸事件 安卓触摸事件处理操作的实例,TouchScreen源代码,触摸事件是Android手机操作的基本,一个好的触摸事件机制能提高Android的操作体验。本代码通过一系列示例演示android触摸事件...
Android-触摸例子,多个例子打包。android中处理各种触摸事件
Android不同层次的触摸事件监听 APP开发中,经常会遇到有关手势处理的操作,比如向右滑动返回上一个页面。关于触摸事件的处理,我们可以大概处理在不同的层次上。 Activity层:可以看做触摸事件获取的最顶层 ...
Android里有两个类android.view.GestureDetectorandroid.view.GestureDetector.SimpleOnGestureListener(另外android.widget.Gallery好像是更牛x的OnGestureListener )1)新建一个类继承SimpleOnGestureListener,...
【Android基础】(11)多点触摸交互处理
Android事件处理,触摸事件、监听事件、手势识别等技术颇有研究,对个人开发非常有用。请安心下载。
内容概要:1....学习收获:对触摸事件和RecyclerView有更深的了解; 阅读建议:此资源有详细的注解,建议结合注解阅读,遇到不懂 的方法需进行网络搜索,阅读完毕之后,建议手写一份,更有助于理解和记忆
事件分发和消费我们主要涉及到以下三个方法:dispatchTouchEvent():分发事件onInterceptTouchEvent():拦截事件onTouchEvent():处理事件还需要注意常用的两个接口对以上方法的影响:OnClickListener:点击事件监听...
> Android 系统的触摸事件分发总是从父布局开始分发,从最顶层的子 View 开始处理,这种特性有时候会限制了我们一些很复杂的交互设计。 > > TouchEventBus 致力于解决非嵌套的滑动冲突,比如多个 在同一层级 的...