Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
android-touch-event
提交
6e32198a
A
android-touch-event
项目概览
门心叼龙
/
android-touch-event
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
android-touch-event
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6e32198a
编写于
5月 14, 2019
作者:
门心叼龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
map touch add
上级
bbb7351f
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
196 addition
and
172 deletion
+196
-172
app/src/main/java/com/android/touchevent/MainActivity.java
app/src/main/java/com/android/touchevent/MainActivity.java
+2
-2
app/src/main/java/com/android/touchevent/MapTouchActivity.java
...rc/main/java/com/android/touchevent/MapTouchActivity.java
+102
-9
app/src/main/java/com/android/touchevent/util/BlogViewController.java
.../java/com/android/touchevent/util/BlogViewController.java
+0
-120
app/src/main/java/com/android/touchevent/view/BlogMapView.java
...rc/main/java/com/android/touchevent/view/BlogMapView.java
+15
-20
app/src/main/java/com/android/touchevent/view/BlogScrollView.java
...main/java/com/android/touchevent/view/BlogScrollView.java
+38
-0
app/src/main/java/com/android/touchevent/view/BlogTransView.java
.../main/java/com/android/touchevent/view/BlogTransView.java
+33
-15
app/src/main/java/com/android/touchevent/view/MyButton.java
app/src/main/java/com/android/touchevent/view/MyButton.java
+2
-2
app/src/main/java/com/android/touchevent/view/MyLayout.java
app/src/main/java/com/android/touchevent/view/MyLayout.java
+2
-2
app/src/main/res/layout/activity_trip_detail.xml
app/src/main/res/layout/activity_trip_detail.xml
+2
-2
未找到文件。
app/src/main/java/com/android/touchevent/MainActivity.java
浏览文件 @
6e32198a
...
...
@@ -33,13 +33,13 @@ public class MainActivity extends AppCompatActivity {
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
ev
)
{
Log
.
v
(
TAG
,
"MainActivity
dispatchTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
Log
.
v
(
TAG
,
"MainActivity
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
return
super
.
dispatchTouchEvent
(
ev
);
}
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
Log
.
v
(
TAG
,
"MainActivity
onTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
Log
.
v
(
TAG
,
"MainActivity
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
return
super
.
onTouchEvent
(
event
);
}
}
app/src/main/java/com/android/touchevent/MapTouchActivity.java
浏览文件 @
6e32198a
package
com.android.touchevent
;
import
android.animation.AnimatorSet
;
import
android.animation.ObjectAnimator
;
import
android.animation.ValueAnimator
;
import
android.graphics.Rect
;
import
android.os.Bundle
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.design.widget.Snackbar
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.widget.Toolbar
;
import
android.view.View
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.widget.CompoundButton
;
import
android.widget.RelativeLayout
;
import
com.android.touchevent.util.
BlogViewController
;
import
com.android.touchevent.util.
DisplayUtil
;
import
com.android.touchevent.view.BlogMapView
;
import
com.android.touchevent.view.BlogTransView
;
import
com.android.touchevent.view.
Trans
ScrollView
;
import
com.android.touchevent.view.
Blog
ScrollView
;
public
class
MapTouchActivity
extends
AppCompatActivity
{
public
static
final
String
TAG
=
MapTouchActivity
.
class
.
getSimpleName
();
private
RelativeLayout
mLayoutBlogRoot
;
private
BlogMapView
mBlogMapView
;
private
BlogTransView
mBlogTransView
;
private
TransScrollView
mTrans
ScrollView
;
private
BlogScrollView
mBlog
ScrollView
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -27,15 +32,103 @@ public class MapTouchActivity extends AppCompatActivity {
setSupportActionBar
(
toolbar
);
mBlogMapView
=
findViewById
(
R
.
id
.
blog_map_view
);
mBlogTransView
=
findViewById
(
R
.
id
.
view_blog_trans
);
m
Trans
ScrollView
=
findViewById
(
R
.
id
.
view_scrollview
);
m
Blog
ScrollView
=
findViewById
(
R
.
id
.
view_scrollview
);
mLayoutBlogRoot
=
findViewById
(
R
.
id
.
layout_blog_root
);
mBlogMapView
.
onCreate
(
savedInstanceState
);
BlogViewController
mBlogViewController
=
new
BlogViewController
(
mLayoutBlogRoot
,
mBlogMapView
,
mTransScrollView
,
mBlogTransView
);
mBlogViewController
.
init
();
init
();
}
public
void
init
()
{
//设置BlogScrollView的透明部分的监听器
mBlogScrollView
.
setTransViewTouchListener
(
new
BlogTransView
.
OnTouchEventListener
()
{
@Override
public
boolean
isTouchTransView
(
MotionEvent
event
)
{
return
mBlogTransView
.
isTouchTransView
(
event
);
}
});
//设置透明的view的事件分发器
mBlogTransView
.
setDispatchEventListener
(
new
BlogTransView
.
DispatchEventListener
()
{
@Override
public
boolean
dispathTouchEvent
(
MotionEvent
event
)
{
//直接把事件分发给BlogMapView
return
mBlogMapView
.
dispatchMapTouchEvent
(
event
);
}
});
//设置透明view里放大,缩小按钮的监听器
mBlogTransView
.
setBtnZoomChangeListener
(
new
CompoundButton
.
OnCheckedChangeListener
()
{
@Override
public
void
onCheckedChanged
(
CompoundButton
compoundButton
,
boolean
b
)
{
//如果不是人手动点击则返回
if
(!
compoundButton
.
isPressed
())
{
return
;
}
//把BlogTransView状态设置给MapView的CheckBox
mBlogMapView
.
setBtnMapZoomChecked
(
b
);
}
});
//设置地图放大按钮的回调监听,进行地图展开和缩小的操作
mBlogMapView
.
setChangeListener
(
new
CompoundButton
.
OnCheckedChangeListener
()
{
@Override
public
void
onCheckedChanged
(
CompoundButton
buttonView
,
boolean
isChecked
)
{
//开始展开,收缩的操作
setFlexWindow
(
isChecked
);
}
});
}
//设置弹性窗口true:展开;false:收缩
private
void
setFlexWindow
(
boolean
b
)
{
//当为true的时候:1.ScrollView要往下移动,是一个位移动画;
//当为false的时候:1.ScrollView要往上移动,是一个位移动画;
//往下移动,要移动多少?其实就是整个内容区域的高度,也就是layoutRoot的高度,恢复高度为0即可
//MapView要缩放,要放大到多少倍?其他就是layoutRoot的高度除以MapView的高度
//计算MapView的高度
Rect
rect
=
new
Rect
();
mBlogTransView
.
getLocalVisibleRect
(
rect
);
int
mMapViewHeight
=
DisplayUtil
.
dip2px
(
250
);
//不判断将是个大Bug
if
(
rect
.
height
()
<
mMapViewHeight
-
DisplayUtil
.
dip2px
(
30
))
{
mBlogTransView
.
setBtnMapZoomChecked
(!
b
);
mBlogMapView
.
setBtnMapZoomChecked
(!
b
);
return
;
}
Log
.
v
(
TAG
,
"mapview height:"
+
mMapViewHeight
);
//计算整个内容区域的高度
int
mRootHeight
=
mLayoutBlogRoot
.
getHeight
();
Log
.
v
(
TAG
,
"rootlayout height:"
+
mRootHeight
);
int
offset
=
mRootHeight
-
mMapViewHeight
;
Log
.
v
(
TAG
,
"offset height:"
+
offset
);
Log
.
v
(
TAG
,
"scrollview width:"
+
mBlogScrollView
.
getWidth
()
+
";height:"
+
mBlogScrollView
.
getHeight
()
+
";x:"
+
mBlogScrollView
.
getX
()
+
";y:"
+
mBlogScrollView
.
getY
());
if
(
b
)
{
expendAnimator
(
mMapViewHeight
,
mRootHeight
,
offset
);
}
else
{
expendAnimator
(
mRootHeight
,
mMapViewHeight
,
0
);
}
}
private
void
expendAnimator
(
int
mMapViewHeight
,
int
mRootHeight
,
int
offset
)
{
//创建ScrollView向下移动移动
ObjectAnimator
translateAnimator
=
ObjectAnimator
.
ofFloat
(
mBlogScrollView
,
"translationY"
,
offset
);
//创建地图放大动画
ValueAnimator
valueAnimator
=
ValueAnimator
.
ofInt
(
mMapViewHeight
,
mRootHeight
);
valueAnimator
.
addUpdateListener
(
new
ValueAnimator
.
AnimatorUpdateListener
()
{
@Override
public
void
onAnimationUpdate
(
ValueAnimator
valueAnimator
)
{
int
animatedValue
=
(
int
)
valueAnimator
.
getAnimatedValue
();
Log
.
v
(
TAG
,
"map height:"
+
animatedValue
);
mBlogMapView
.
setMapLayoutParams
(
animatedValue
);
}
});
//合成两个动画效果
AnimatorSet
animatorSet
=
new
AnimatorSet
();
animatorSet
.
play
(
translateAnimator
).
with
(
valueAnimator
);
animatorSet
.
setDuration
(
1000
);
animatorSet
.
start
();
}
}
app/src/main/java/com/android/touchevent/util/BlogViewController.java
已删除
100644 → 0
浏览文件 @
bbb7351f
package
com.android.touchevent.util
;
import
android.animation.AnimatorSet
;
import
android.animation.ObjectAnimator
;
import
android.animation.ValueAnimator
;
import
android.graphics.Rect
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.widget.CompoundButton
;
import
android.widget.RelativeLayout
;
import
com.android.touchevent.view.BlogMapView
;
import
com.android.touchevent.view.BlogTransView
;
import
com.android.touchevent.view.TransScrollView
;
/**
* Description: <View协调控制器><br>
* Author: gxl<br>
* Date: 2019/1/25<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
BlogViewController
{
public
static
final
String
TAG
=
BlogViewController
.
class
.
getSimpleName
();
private
RelativeLayout
mLayoutBlogRoot
;
private
BlogMapView
mBlogMapView
;
private
TransScrollView
mTransScrollView
;
private
BlogTransView
mBlogTransView
;
public
BlogViewController
(
RelativeLayout
layoutBlogRoot
,
BlogMapView
blogMapView
,
TransScrollView
transScrollView
,
BlogTransView
blogTransView
)
{
mLayoutBlogRoot
=
layoutBlogRoot
;
mBlogMapView
=
blogMapView
;
mTransScrollView
=
transScrollView
;
mBlogTransView
=
blogTransView
;
}
public
void
init
()
{
mBlogTransView
.
setListener
(
new
BlogTransView
.
TouchEventListener
()
{
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
event
)
{
return
mBlogMapView
.
dispatchMapTouchEvent
(
event
);
}
});
mBlogTransView
.
setBtnMapZoomOnCheckedChangeListener
(
new
CompoundButton
.
OnCheckedChangeListener
()
{
@Override
public
void
onCheckedChanged
(
CompoundButton
compoundButton
,
boolean
b
)
{
//如果不是人手动点击则返回
if
(!
compoundButton
.
isPressed
())
{
return
;
}
mBlogMapView
.
setBtnMapZoomChecked
(
b
);
setFlexWindow
(
b
);
}
});
mTransScrollView
.
setListener
(
new
BlogTransView
.
TouchEventListener
()
{
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
event
)
{
Rect
rect
=
new
Rect
();
mBlogTransView
.
getLocalVisibleRect
(
rect
);
if
(
rect
.
contains
((
int
)
event
.
getX
(),
(
int
)
event
.
getY
()))
{
return
true
;
}
else
{
return
false
;
}
}
});
}
//设置弹性窗口true:展开;false:收缩
private
void
setFlexWindow
(
boolean
b
)
{
//当为true的时候:1.ScrollView要往下移动,是一个位移动画;
//当为false的时候:1.ScrollView要往上移动,是一个位移动画;
//往下移动,要移动多少?其实就是整个内容区域的高度,也就是layoutRoot的高度,恢复高度为0即可
//MapView要缩放,要放大到多少倍?其他就是layoutRoot的高度除以MapView的高度
//计算MapView的高度
Rect
rect
=
new
Rect
();
mBlogTransView
.
getLocalVisibleRect
(
rect
);
int
mMapViewHeight
=
DisplayUtil
.
dip2px
(
250
);
//不判断将是个大Bug
if
(
rect
.
height
()
<
mMapViewHeight
-
DisplayUtil
.
dip2px
(
30
))
{
mBlogTransView
.
setBtnMapZoomChecked
(!
b
);
mBlogMapView
.
setBtnMapZoomChecked
(!
b
);
return
;
}
Log
.
v
(
TAG
,
"mapview height:"
+
mMapViewHeight
);
//计算整个内容区域的高度
int
mRootHeight
=
mLayoutBlogRoot
.
getHeight
();
Log
.
v
(
TAG
,
"rootlayout height:"
+
mRootHeight
);
int
offset
=
mRootHeight
-
mMapViewHeight
;
Log
.
v
(
TAG
,
"offset height:"
+
offset
);
Log
.
v
(
TAG
,
"scrollview width:"
+
mTransScrollView
.
getWidth
()
+
";height:"
+
mTransScrollView
.
getHeight
()
+
";x:"
+
mTransScrollView
.
getX
()
+
";y:"
+
mTransScrollView
.
getY
());
if
(
b
)
{
expendAnimator
(
mMapViewHeight
,
mRootHeight
,
offset
);
}
else
{
expendAnimator
(
mRootHeight
,
mMapViewHeight
,
0
);
}
}
private
void
expendAnimator
(
int
mMapViewHeight
,
int
mRootHeight
,
int
offset
)
{
//创建ScrollView向下移动移动
ObjectAnimator
translateAnimator
=
ObjectAnimator
.
ofFloat
(
mTransScrollView
,
"translationY"
,
offset
);
//创建地图放大动画
ValueAnimator
valueAnimator
=
ValueAnimator
.
ofInt
(
mMapViewHeight
,
mRootHeight
);
valueAnimator
.
addUpdateListener
(
new
ValueAnimator
.
AnimatorUpdateListener
()
{
@Override
public
void
onAnimationUpdate
(
ValueAnimator
valueAnimator
)
{
int
animatedValue
=
(
int
)
valueAnimator
.
getAnimatedValue
();
Log
.
v
(
TAG
,
"map height:"
+
animatedValue
);
mBlogMapView
.
setMapLayoutParams
(
animatedValue
);
}
});
//合成两个动画效果
AnimatorSet
animatorSet
=
new
AnimatorSet
();
animatorSet
.
play
(
translateAnimator
).
with
(
valueAnimator
);
animatorSet
.
setDuration
(
1000
);
animatorSet
.
start
();
}
}
app/src/main/java/com/android/touchevent/view/BlogMapView.java
浏览文件 @
6e32198a
...
...
@@ -6,8 +6,8 @@ import android.util.AttributeSet;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.widget.CheckBox
;
import
android.widget.CompoundButton
;
import
android.widget.RelativeLayout
;
import
com.amap.api.maps.AMap
;
import
com.amap.api.maps.TextureMapView
;
import
com.android.touchevent.R
;
...
...
@@ -24,6 +24,7 @@ public class BlogMapView extends RelativeLayout {
private
AMap
mMap
;
private
TextureMapView
mTextureMapView
;
private
CheckBox
mBtnMapZoom
;
private
CompoundButton
.
OnCheckedChangeListener
mChangeListener
;
public
BlogMapView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
...
...
@@ -33,6 +34,14 @@ public class BlogMapView extends RelativeLayout {
mMap
.
getUiSettings
().
setZoomControlsEnabled
(
false
);
mBtnMapZoom
=
findViewById
(
R
.
id
.
btn_map_zoom
);
mBtnMapZoom
.
setOnCheckedChangeListener
(
new
CompoundButton
.
OnCheckedChangeListener
()
{
@Override
public
void
onCheckedChanged
(
CompoundButton
compoundButton
,
boolean
b
)
{
if
(
mChangeListener
!=
null
)
{
mChangeListener
.
onCheckedChanged
(
compoundButton
,
b
);
}
}
});
}
public
boolean
dispatchMapTouchEvent
(
MotionEvent
event
)
{
...
...
@@ -45,32 +54,18 @@ public class BlogMapView extends RelativeLayout {
}
public
void
setBtnMapZoomChecked
(
boolean
b
)
{
if
(
mBtnMapZoom
!=
null
)
{
mBtnMapZoom
.
setChecked
(
b
);
}
mBtnMapZoom
.
setChecked
(
b
);
}
public
void
onCreate
(
Bundle
bundle
)
{
mTextureMapView
.
onCreate
(
bundle
);
}
public
void
onResume
()
{
mTextureMapView
.
onResume
();
}
public
void
onSaveInstanceState
(
Bundle
outState
)
{
mTextureMapView
.
onSaveInstanceState
(
outState
);
}
public
void
onPause
()
{
mTextureMapView
.
onPause
();
}
public
void
onDestroy
()
{
mTextureMapView
.
onDestroy
();
}
public
AMap
getMap
()
{
return
mMap
;
}
public
void
setChangeListener
(
CompoundButton
.
OnCheckedChangeListener
changeListener
)
{
mChangeListener
=
changeListener
;
}
}
app/src/main/java/com/android/touchevent/view/
Trans
ScrollView.java
→
app/src/main/java/com/android/touchevent/view/
Blog
ScrollView.java
浏览文件 @
6e32198a
...
...
@@ -14,22 +14,25 @@ import android.view.MotionEvent;
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
Trans
ScrollView
extends
NestedScrollView
{
public
BlogTransView
.
TouchEventListener
m
Listener
;
public
class
Blog
ScrollView
extends
NestedScrollView
{
public
BlogTransView
.
OnTouchEventListener
mTouchEvent
Listener
;
public
Trans
ScrollView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
)
{
public
Blog
ScrollView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
@Override
public
boolean
onInterceptTouchEvent
(
MotionEvent
ev
)
{
if
(
mListener
!=
null
&&
mListener
.
dispatchTouchEvent
(
ev
))
{
//如果触摸的是透明BlogTransView,那么该事件继续往下分发给BlogScrollView的子View:BlogTransView
if
(
mTouchEventListener
!=
null
&&
mTouchEventListener
.
isTouchTransView
(
ev
))
{
//返回false表示继续往下层View树进行分发
return
false
;
}
//否则就调用ScrollView的拦截事件,进行滚动处理
return
super
.
onInterceptTouchEvent
(
ev
);
}
public
void
set
Listener
(
BlogTransView
.
TouchEventListener
listener
)
{
mListener
=
listener
;
//设置透明View的触摸事件监听器
public
void
set
TransViewTouchListener
(
BlogTransView
.
On
TouchEventListener
listener
)
{
m
TouchEvent
Listener
=
listener
;
}
}
app/src/main/java/com/android/touchevent/view/BlogTransView.java
浏览文件 @
6e32198a
...
...
@@ -22,14 +22,17 @@ import com.android.touchevent.R;
*/
public
class
BlogTransView
extends
RelativeLayout
{
public
static
final
String
TAG
=
BlogTransView
.
class
.
getSimpleName
();
private
BlogTransView
.
TouchEventListener
mListener
;
private
CheckBox
mBtnMapZoom
;
private
CompoundButton
.
OnCheckedChangeListener
mChangeListener
;
public
interface
TouchEventListener
{
boolean
dispatchTouchEvent
(
MotionEvent
event
);
private
CompoundButton
.
OnCheckedChangeListener
mBtnZoomChangeListener
;
private
DispatchEventListener
mDispatchEventListener
;
//是否被触摸的监听器
public
interface
OnTouchEventListener
{
boolean
isTouchTransView
(
MotionEvent
event
);
}
//透明View的事件分发监听器
public
interface
DispatchEventListener
{
boolean
dispathTouchEvent
(
MotionEvent
event
);
}
public
BlogTransView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
view_blog_trans
,
this
,
true
);
...
...
@@ -37,42 +40,57 @@ public class BlogTransView extends RelativeLayout {
mBtnMapZoom
.
setOnCheckedChangeListener
(
new
CompoundButton
.
OnCheckedChangeListener
()
{
@Override
public
void
onCheckedChanged
(
CompoundButton
compoundButton
,
boolean
b
)
{
if
(
mChangeListener
!=
null
)
{
mChangeListener
.
onCheckedChanged
(
compoundButton
,
b
);
if
(
m
BtnZoom
ChangeListener
!=
null
)
{
m
BtnZoom
ChangeListener
.
onCheckedChanged
(
compoundButton
,
b
);
}
}
});
}
//如果触摸了ScrollView上半部分的透明的部分,则事件会分发至此
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
event
)
{
if
(
mListener
!=
null
)
{
if
(
m
DispatchEvent
Listener
!=
null
)
{
Rect
rect
=
new
Rect
();
mBtnMapZoom
.
getHitRect
(
rect
);
Log
.
v
(
TAG
,
"x:"
+
event
.
getX
()
+
";y:"
+
event
.
getY
());
//如果用户点击了放大,缩小按钮则该事件会继续往下分发给他的子View:CheckBox
if
(
rect
.
contains
((
int
)
event
.
getX
(),
(
int
)
event
.
getY
()))
{
Log
.
v
(
TAG
,
"mBtnMapZoom click yes"
);
return
super
.
dispatchTouchEvent
(
event
);
//继续往下分发给CheckBox
}
else
{
Log
.
v
(
TAG
,
"mBtnMapZoom click no"
);
return
m
Listener
.
dispatc
hTouchEvent
(
event
);
return
m
DispatchEventListener
.
dispat
hTouchEvent
(
event
);
}
}
else
{
return
super
.
dispatchTouchEvent
(
event
);
}
}
public
void
setListener
(
BlogTransView
.
TouchEvent
Listener
listener
)
{
mListener
=
listener
;
public
void
setBtnZoomChangeListener
(
CompoundButton
.
OnCheckedChange
Listener
listener
)
{
m
BtnZoomChange
Listener
=
listener
;
}
public
void
setBtnMapZoomOnCheckedChangeListener
(
CompoundButton
.
OnCheckedChangeListener
listener
)
{
mChangeListener
=
listener
;
}
public
void
setBtnMapZoomChecked
(
boolean
b
)
{
if
(
mBtnMapZoom
!=
null
)
{
mBtnMapZoom
.
setChecked
(
b
);
}
}
public
boolean
isTouchTransView
(
MotionEvent
event
){
Rect
rect
=
new
Rect
();
getLocalVisibleRect
(
rect
);
//根据坐标来判断,是否是点击了透明View,如果是则返回true,否则返回false
if
(
rect
.
contains
((
int
)
event
.
getX
(),
(
int
)
event
.
getY
()))
{
return
true
;
}
else
{
return
false
;
}
}
public
void
setDispatchEventListener
(
DispatchEventListener
dispatchEventListener
)
{
mDispatchEventListener
=
dispatchEventListener
;
}
}
app/src/main/java/com/android/touchevent/view/MyButton.java
浏览文件 @
6e32198a
...
...
@@ -25,13 +25,13 @@ public class MyButton extends Button {
}
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
ev
)
{
Log
.
v
(
TAG
,
"MyButton
dispatchTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
Log
.
v
(
TAG
,
"MyButton
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
return
super
.
dispatchTouchEvent
(
ev
);
}
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
Log
.
v
(
TAG
,
"MyButton
onTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
Log
.
v
(
TAG
,
"MyButton
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
return
super
.
onTouchEvent
(
event
);
}
}
app/src/main/java/com/android/touchevent/view/MyLayout.java
浏览文件 @
6e32198a
...
...
@@ -24,7 +24,7 @@ public class MyLayout extends LinearLayout {
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
ev
)
{
Log
.
v
(
TAG
,
"MyLayout
dispatchTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
Log
.
v
(
TAG
,
"MyLayout
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
ev
));
return
super
.
dispatchTouchEvent
(
ev
);
}
...
...
@@ -36,7 +36,7 @@ public class MyLayout extends LinearLayout {
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
Log
.
v
(
TAG
,
"MyLayout
onTouchEvent
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
Log
.
v
(
TAG
,
"MyLayout
isTouchTransView
start:"
+
MotionEventUtil
.
getMotionEventName
(
event
));
return
super
.
onTouchEvent
(
event
);
}
}
app/src/main/res/layout/activity_trip_detail.xml
浏览文件 @
6e32198a
...
...
@@ -28,7 +28,7 @@
/>
<com.android.touchevent.view.
Trans
ScrollView
<com.android.touchevent.view.
Blog
ScrollView
android:id=
"@+id/view_scrollview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
...
...
@@ -234,6 +234,6 @@
/>
</LinearLayout>
</LinearLayout>
</com.android.touchevent.view.
Trans
ScrollView>
</com.android.touchevent.view.
Blog
ScrollView>
</RelativeLayout>
</LinearLayout>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录