您的位置:首页 > 移动开发 > Android开发

Android 开发:ViewFlipper 左右滑动效果

2012-02-04 08:50 477 查看
 http://www.open-open.com/lib/view/open1325602955359.html

 

怎么实现Android主页面的左右拖动效果。其实实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。

view source

print?

01
public
class
TestFlip
extends

Activity
implements

OnGestureListener {  
02
 
 
03
private
ViewFlipper flipper;  
04
 
 
05
private
GestureDetector detector;  
06
 
 
07
/** Called when the activity is first created. */
  
08
@Override
  
09
public
void
onCreate(Bundle savedInstanceState) {  

10
super
.onCreate(savedInstanceState);  
11
setContentView(R.layout.main);  

12
 
 
13
detector =
new

GestureDetector(
this
);  
14
flipper = (ViewFlipper)
this
.findViewById(R.id.ViewFlipper01);  
15
flipper.addView(addView(R.layout.layout1));  
16
flipper.addView(addView(R.layout.layout2));  
17
flipper.addView(addView(R.layout.layout3));  
18
flipper.addView(addView(R.layout.layout4));  
19
}  
20
 
 
21
private
View addView(
int
layout) {  
22
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
23
View view = inflater.inflate(layout,
null
);  

24
return
view;  
25
}  
26
 
 
27
@Override
  
28
public
boolean
onTouchEvent(MotionEvent event) {  

29
return
this
.detector.onTouchEvent(event);  
30
}  
31
 
 
32
@Override
  
33
public
boolean
onDown(MotionEvent e) {  
34
// TODO Auto-generated method stub   
35
return
false
;  
36
}  
37
 
 
38
@Override
  
39
public
boolean
onFling(MotionEvent e1, MotionEvent e2,

float
velocityX,  

40
float
velocityY) {  
41
if
(e1.getX() - e2.getX() >
120
) {  
42
this
.flipper.setInAnimation(AnimationUtils.loadAnimation(
this
, R.anim.push_left_in));  
43
this
.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this
, R.anim.push_left_out));  
44
this
.flipper.showNext();  
45
return
true
;  
46
}
else

if
(e1.getX() - e2.getX() < -
120
) {  
47
this
.flipper.setInAnimation(AnimationUtils.loadAnimation(
this
, R.anim.push_right_in));  
48
this
.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this
, R.anim.push_right_out));  
49
this
.flipper.showPrevious();  
50
return
true
;  
51
}  
52
return
false
;  
53
}  
54
 
 
55
@Override
  
56
public
void
onLongPress(MotionEvent e) {  
57
// TODO Auto-generated method stub   
58
 
 
59
}  
60
 
 
61
@Override
  
62
public
boolean
onScroll(MotionEvent e1, MotionEvent e2,

float
distanceX,  

63
float
distanceY) {  
64
// TODO Auto-generated method stub   
65
return
false
;  
66
}  
67
 
 
68
@Override
  
69
public
void
onShowPress(MotionEvent e) {  
70
// TODO Auto-generated method stub   
71
 
 
72
}  
73
 
 
74
@Override
  
75
public
boolean
onSingleTapUp(MotionEvent e) {  
76
// TODO Auto-generated method stub   
77
return
false
;  
78
}  
79
}
view source

print?

01
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>  
02
<
LinearLayout

xmlns:Android
=
"http://schemas.android.com/apk/res/android"
  
03
Android:orientation
=
"vertical"
  
04
Android:layout_width
=
"fill_parent"
  
05
Android:layout_height
=
"fill_parent"
  
06
>  
07
<
ViewFlipper

Android:id
=
"@+id/ViewFlipper01"
  
08
Android:layout_width
=
"fill_parent"

android:layout_height
=
"fill_parent"
>  
09
</
ViewFlipper
>  
10
</
LinearLayout
>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息