您的位置:首页 > 其它

图片可以拖到任意位置

2012-12-26 14:48 218 查看
下面为Activity的代码:

01
public
class
DraftTest
extends
Activity
{
02
/**
Calledwhentheactivityisfirstcreated.*/
03
@Override
04
public
void
onCreate(Bundle
savedInstanceState){
05
super
.onCreate(savedInstanceState);
06
setContentView(R.layout.sign);
07
DisplayMetrics
dm=getResources().getDisplayMetrics();
08
final
int
screenWidth
=dm.widthPixels;
09
final
int
screenHeight
=dm.heightPixels-
50
;
10
//拖动的按钮
11
final
Button
b=(Button)findViewById(R.id.startBtn);
12
13
//添加触摸事件
14
15
b.setOnTouchListener(
new
OnTouchListener(){
16
int
lastX,
lastY;
//记录移动的最后的位置
17
public
boolean
onTouch(View
v,MotionEventevent){
18
//获取Action
19
20
int
ea=event.getAction();
21
22
Log.i(
"TAG"
,
"Touch:"
+ea);
23
switch
(ea){
24
case
MotionEvent.ACTION_DOWN:
//按下
25
lastX
=(
int
)
event.getRawX();
26
lastY
=(
int
)
event.getRawY();
27
break
;
28
/**
29
*
layout(l,t,r,b)
30
*
lLeftposition,relativetoparent
31
t
Topposition,relativetoparent
32
r
Rightposition,relativetoparent
33
b
Bottomposition,relativetoparent
34
*
*/
35
case
MotionEvent.ACTION_MOVE:
//移动
36
//移动中动态设置位置
37
int
dx
=(
int
)event.getRawX()
-lastX;
38
int
dy
=(
int
)event.getRawY()
-lastY;
39
int
left
=v.getLeft()+dx;
40
int
top
=v.getTop()+dy;
41
int
right
=v.getRight()+dx;
42
int
bottom
=v.getBottom()+dy;
43
if
(left
<
0
){
44
left
=
0
;
45
right
=left+v.getWidth();
46
}
47
if
(right
>screenWidth){
48
right
=screenWidth;
49
left
=right-v.getWidth();
50
}
51
if
(top
<
0
){
52
top
=
0
;
53
bottom
=top+v.getHeight();
54
}
55
if
(bottom
>screenHeight){
56
bottom
=screenHeight;
57
top
=bottom-v.getHeight();
58
}
59
v.layout(left,
top,right,bottom);
60
Log.i(
""
,
"position:"
+
left+
",
"
+
top+
",
"
+
right+
",
"
+
bottom);
61
//将当前的位置再次设置
62
lastX
=(
int
)
event.getRawX();
63
lastY
=(
int
)
event.getRawY();
64
break
;
65
case
MotionEvent.ACTION_UP:
//脱离
66
break
;
67
}
68
return
false
;
69
}});
70
}
71
}
XML配置文件Sign.xml的代码:

01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
android:id
=
"@+id/layoutRacingNeedForSpeed"
android:padding
=
"0px"
04
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
05
<
Button
06
android:id
=
"@+id/startBtn"
07
android:text
=
"tuodongdeanniu"
08
android:layout_centerInParent
=
"true"
09
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
/>
10
</
RelativeLayout
>
这样就可以实现了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ontouch