1.本文阐释总结,再根据案例验证总结:
首先,构建两个控件:Layout和View的子类,同样,Activity也有onTouchEvent().且无论如何都会执行;
package org.lean.lifecyleapp;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
/**
* @author linwb
*/
public class ChildView extends View {
private int colorNum=0;
public ChildView(Context context,AttributeSet attributeSet) {
super(context,attributeSet);
setFocusable(true);
setFocusableInTouchMode(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (colorNum>100) {
colorNum=0;
}else {
colorNum+=1;
}
Paint paint=new Paint();
switch (colorNum%4) {
case 0:
paint.setColor(Color.RED);
break;
case 1:
paint.setColor(Color.BLUE);
break;
case 2:
paint.setColor(Color.YELLOW);
break;
case 3:
paint.setColor(Color.GREEN);
break;
default:
break;
}
canvas.drawRect(20.0f, 20.0f, 390.0f, 370.0f,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
public class Layout extends RelativeLayout {
public Layout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
在主Activity中添加布局layout_main,代码如下:
<org.lean.lifecyleapp.Layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<org.lean.lifecyleapp.ChildView
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#F00" />
</org.lean.lifecyleapp.Layout>
运行界面如下:
探索横向跨层的规律:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.v("aa","ChildView::::ACTION_DOWN");
return true;
// break;
case MotionEvent.ACTION_MOVE:
Log.v("aa","ChildView::::ACTION_MOVE");
// return true;
break;
case MotionEvent.ACTION_UP:
Log.v("aa","ChildView::::ACTION_UP");
break;
default:
break;
}
return super.onTouchEvent(event);
}
分享到:
相关推荐
NULL 博文链接:https://2528.iteye.com/blog/1056731
最近有研究了QQ空间可拉伸头部控件的listView。如何去做呢?这里使用了自定义listView的方法。...- 重写onTouchEvent方法,执行触摸时释放事件的处理欢迎入群 QQ交流群 :232203809 微信公众号:终端研发部
重写onTouchEvent事件,实现上下左右滑动的小例子。
onInterceptTouchEvent和onTouchEvent调用关系详解
重写onTouchEvent实现滑屏显示菜单,内有缓存,数据库存储
NULL 博文链接:https://yxwww.iteye.com/blog/1409461
大家都知道,我们的activity中有onTouchEvent方法,可以用来实现触摸事件的监听。 activity的触摸事件 @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } ...
触摸事件发送到视图时调用(v:视图,event:触摸事件) 返回true:事件被完全消耗(即,从down事件开始,触发move,up所有的事件) 返回fasle:事件未被完全消耗(即,只会消耗掉down事件) 2、boolean onTouchEvent...
安卓事件分发机制测试代码,事件传递从Activity-->ViewGroup-->View。dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent这三个函数的返回值不同,代表的事件传递的不同。
2.Activity因为上最先接触到触摸事件,因此Activity没有事件拦截方法。即没有dispatchTouchEvent方法。 3.对于不能添加子控件的view,不能对事件进行分发和拦截,它只有onTouchEvent事件。 二、三个方法 1.public ...
关于onInterceptTouchEvent和onTouchEvent使用demo,很不错的一个demo,可以帮助Android的触摸事件。
onInterceptTouchEvent与OntouchEvent之间的事件传递机制的具体内涵关系...
用Activity的onTouchEvent方法实现监听手指上下左右滑动 应用了Activity的ontouchEvent方法监听手指点击事件,手指滑动的时候会先按下,滑倒另一个地方再抬起,我们就可以根据按下的坐标和抬起的坐标算出用户是往哪...
Android activity和view判断滑动 实例代码: //手指按下的点为(x1, y1)手指离开屏幕的点为(x2, y2) float x1 = 0; float x2 = 0; float y1 = 0; float y2 = 0; @Override public boolean onTouchEvent...
本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTouchEvent的区别详解。需要的朋友参考下
NULL 博文链接:https://username2.iteye.com/blog/2193153
下面小编就为大家带来一篇Android onTouchEvent事件中onTouch方法返回值(介绍)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈onTouch和onTouchEvent(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧