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

Android实现渐显按钮的左右滑动效果

2012-12-20 10:15 681 查看
本示例演示在Android中实现带渐显按钮的左右滑动效果。
先看下运行效果:





程序结构:



MainActivity文件中代码:

001
package
com.android.buttonpageflipper;
002
 
 
003
import
android.app.Activity;
004
import
android.graphics.PixelFormat;
005
import
android.os.Bundle;
006
import
android.os.Handler;
007
import
android.os.Message;
008
import
android.view.Gravity;
009
import
android.view.MotionEvent;
010
import
android.view.View;
011
import
android.view.WindowManager;
012
import
android.view.WindowManager.LayoutParams;
013
import
android.widget.ImageView;
014
import
android.widget.ViewFlipper;
015
 
 
016
/**
017
*Android实现带渐显按钮的左右滑动效果

018
*自然状态下按钮不可见,触摸屏幕时显示按钮

019
*@author Administrator

020
*
021
*/
022
public
class
MainActivityextends Activity {
023
//声明两个按钮,分别代表向左和向右滑动
024
private
ImageView btnLeft=
null
;
025
private
ImageView btnRight=
null
;
026
 
 
027
//设置WindowManager
028
private
WindowManager wm=
null
;
029
private
WindowManager.LayoutParams wmParams=
null
;
030
 
 
031
//ImageView的alpha值
032
private
int
mAlpha =
0
;
033
private
boolean
isHide;
034
 
 
035
private
ViewFlipper viewFlipper =
null
;
036
 
 
037
/**Called when the activity is first created.*/
038
@Override
039
public
void
onCreate(Bundle savedInstanceState) {

040
super
.onCreate(savedInstanceState);
041
setContentView(R.layout.main);

042
 
 
043
setTitle(
"Android实现渐显按钮的左右滑动效果"
);
044
viewFlipper = (ViewFlipper)
this
.findViewById(R.id.myViewFlipper);
045
 
 
046
//初始化左右按钮
047
initImageButtonView();
048
}
049
 
 
050
/**
051
*初始化悬浮按钮 
052
*/
053
private
void
initImageButtonView(){
054
//获取WindowManager
055
wm=(WindowManager)getApplicationContext().getSystemService(
"window"
);
056
 
 
057
//设置LayoutParams相关参数
058
wmParams =
new

WindowManager.LayoutParams();
059
 
 
060
//设置window type
061
wmParams.type=LayoutParams.TYPE_PHONE; 
062
 
 
063
//设置图片格式,效果为背景透明
064
wmParams.format=PixelFormat.RGBA_8888; 
065
 
 
066
//设置Window flag参数
067
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL 
068
| LayoutParams.FLAG_NOT_FOCUSABLE;

069
 
 
070
//设置x、y初始值
071
wmParams.x=
0
;
072
wmParams.y=
0
;
073
 
 
074
//设置窗口长宽数据
075
wmParams.width=
50
;
076
wmParams.height=
50
;
077
 
 
078
//创建左右按钮
079
createLeftButtonView();
080
createRightButtonView();
081
}
082
 
 
083
/**
084
*设置左边按钮 
085
*/
086
private
void
createLeftButtonView(){
087
btnLeft=
new

ImageView(
this
);
088
btnLeft.setImageResource(R.drawable.left);
089
btnLeft.setAlpha(
0
);
090
 
 
091
btnLeft.setOnClickListener(
new

View.OnClickListener() {
092
public
void
onClick(View arg0) {
093
//上一个图像
094
viewFlipper.setInAnimation(MainActivity.
this
, R.anim.push_left_in);
095
viewFlipper.setOutAnimation(MainActivity.
this
, R.anim.push_left_out);
096
viewFlipper.showPrevious();
097
}
098
});
099
 
 
100
//调整窗口
101
wmParams.gravity=Gravity.LEFT|Gravity.CENTER_VERTICAL;
102
 
 
103
//显示图像
104
wm.addView(btnLeft, wmParams);

105
}
106
 
 
107
/**
108
*设置右边按钮 
109
*/
110
private
void
createRightButtonView(){
111
btnRight=
new

ImageView(
this
);
112
btnRight.setImageResource(R.drawable.right);
113
btnRight.setAlpha(
0
);
114
 
 
115
btnRight.setOnClickListener(
new

View.OnClickListener() {
116
public
void
onClick(View arg0) {
117
//下一个图像
118
viewFlipper.setInAnimation(MainActivity.
this
, R.anim.push_right_in);
119
viewFlipper.setOutAnimation(MainActivity.
this
, R.anim.push_right_out);
120
viewFlipper.showNext();
121
}
122
});
123
 
 
124
//调整窗口
125
wmParams.gravity=Gravity.RIGHT|Gravity.CENTER_VERTICAL;
126
 
 
127
//显示图像
128
wm.addView(btnRight, wmParams);

129
}
130
 
 
131
/**
132
*设置按钮渐显效果 
133
*/
134
private
Handler mHandler =
new
Handler()
135
{
136
public
void
handleMessage(Message msg) {
137
if
(msg.what==
1

&& mAlpha<
255
){ 
138
//通过设置不透明度设置按钮的渐显效果
139
mAlpha +=
50
;
140
 
 
141
if
(mAlpha>
255
)
142
mAlpha=
255
;
143
 
 
144
btnLeft.setAlpha(mAlpha);
145
btnLeft.invalidate();
146
btnRight.setAlpha(mAlpha);
147
btnRight.invalidate();
148
 
 
149
if
(!isHide && mAlpha<
255
)
150
mHandler.sendEmptyMessageDelayed(
1
,
100
);
151
}
else

if
(msg.what==
0

&& mAlpha>
0
){
152
mAlpha -=
10
;
153
 
 
154
if
(mAlpha<
0
)
155
mAlpha=
0
;
156
btnLeft.setAlpha(mAlpha);
157
btnLeft.invalidate();
158
btnRight.setAlpha(mAlpha);
159
btnRight.invalidate();
160
 
 
161
if
(isHide && mAlpha>
0
)
162
mHandler.sendEmptyMessageDelayed(
0
,
800
);
163
164
}
165
};
166
 
 
167
private
void
showImageButtonView(){
168
isHide =
false
;
169
mHandler.sendEmptyMessage(
1
);
170
}
171
 
 
172
private
void
hideImageButtonView(){
173
new

Thread(){
174
public
void
run() {
175
try

{
176
Thread.sleep(
1500
);
177
isHide =
true
;
178
mHandler.sendEmptyMessage(
0
);
179
}
catch

(Exception e) {
180
;
181
}
182
}
183
}.start();
184
}
185
 
 
186
@Override
187
public
boolean
onTouchEvent(MotionEvent event) {

188
switch

(event.getAction()) {
189
case
MotionEvent.ACTION_MOVE:
190
case
MotionEvent.ACTION_DOWN:
191
showImageButtonView(); 
192
break
;
193
case
MotionEvent.ACTION_UP:
194
hideImageButtonView(); 
195
break
;
196
}
197
 
 
198
return
true
;
199
}
200
 
 
201
@Override
202
public
void
onDestroy(){
203
super
.onDestroy();
204
//在程序退出(Activity销毁)时销毁窗口
205
wm.removeView(btnLeft);
206
wm.removeView(btnRight);
207
}
208
}
main.xml文件中代码:

01
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
02
<
LinearLayoutxmlns:android
=
"http://schemas.android.com/apk/res/android"

android:layout_width
=
"fill_parent"

android:layout_height
=
"fill_parent"

android:orientation
=
"vertical"
>
03
<
ViewFlipper
04
android:id
=
"@+id/myViewFlipper"
05
android:layout_width
=
"fill_parent"
06
android:layout_height
=
"fill_parent"
>
07
<!-- 第一个页面-->
08
<
LinearLayout
09
android:layout_width
=
"fill_parent"
10
android:layout_height
=
"fill_parent"
11
android:gravity
=
"center"
>
12
<
ImageView
13
android:layout_width
=
"wrap_content"
14
android:layout_height
=
"wrap_content"
15
android:src
=
"@drawable/one"
16
android:gravity
=
"center"
/>
17
</
LinearLayout
>
18
<!-- 第二个页面-->
19
<
LinearLayout
20
android:layout_width
=
"fill_parent"
21
android:layout_height
=
"fill_parent"
22
android:gravity
=
"center"
>
23
<
ImageView
24
android:layout_width
=
"wrap_content"
25
android:layout_height
=
"wrap_content"
26
android:src
=
"@drawable/two"
27
android:gravity
=
"center"
/>
28
</
LinearLayout
>
29
<!-- 第三个页面-->
30
<
LinearLayout
31
android:layout_width
=
"fill_parent"
32
android:layout_height
=
"fill_parent"
33
android:gravity
=
"center"
>
34
<
ImageView
35
android:layout_width
=
"wrap_content"
36
android:layout_height
=
"wrap_content"
37
android:src
=
"@drawable/three"
38
android:gravity
=
"center"
/>
39
</
LinearLayout
>
40
<!-- 第四个页面-->
41
<
LinearLayout
42
android:layout_width
=
"fill_parent"
43
android:layout_height
=
"fill_parent"
44
android:gravity
=
"center"
>
45
<
ImageView
46
android:layout_width
=
"wrap_content"
47
android:layout_height
=
"wrap_content"
48
android:src
=
"@drawable/four"
49
android:gravity
=
"center"
/>
50
</
LinearLayout
>
51
<!-- 第五个页面-->
52
<
LinearLayout
53
android:layout_width
=
"fill_parent"
54
android:layout_height
=
"fill_parent"
55
android:gravity
=
"center"
>
56
<
ImageView
57
android:layout_width
=
"wrap_content"
58
android:layout_height
=
"wrap_content"
59
android:src
=
"@drawable/five"
60
android:gravity
=
"center"
/>
61
</
LinearLayout
>
62
</
ViewFlipper
>
63
</
LinearLayout
>
push_left_in.xml文件中代码:

1
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
2
<
set

xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
3
<
translateandroid:fromXDelta
=
"100%p"

android:toXDelta
=
"0"
4
android:duration
=
"500"
/>
5
<
alpha

android:fromAlpha
=
"0.1"

android:toAlpha
=
"1.0"
6
android:duration
=
"500"
/>
7
</
set
>
push_left_out.xml文件中代码:

1
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
2
<
set

xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
3
<
translateandroid:fromXDelta
=
"0"

android:toXDelta
=
"-100%p"
4
android:duration
=
"500"
/>
5
<
alpha

android:fromAlpha
=
"1.0"

android:toAlpha
=
"0.1"
6
android:duration
=
"500"
/>
7
</
set
>
push_right_in.xml文件中代码:

1
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
2
<
set

xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
3
<
translateandroid:fromXDelta
=
"-100%p"

android:toXDelta
=
"0"
4
android:duration
=
"500"
/>
5
<
alpha

android:fromAlpha
=
"0.1"

android:toAlpha
=
"1.0"
6
android:duration
=
"500"
/>
7
</
set
>
push_right_out.xml文件中代码:

1
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
2
<
set

xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
3
<
translateandroid:fromXDelta
=
"0"

android:toXDelta
=
"100%p"
4
android:duration
=
"500"
/>
5
<
alpha

android:fromAlpha
=
"1.0"

android:toAlpha
=
"0.1"
6
android:duration
=
"500"
/>
7
</
set
>
最后,别忘记了在配置文件中设置权限。

转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: