Android实现渐显按钮的左右滑动效果
2012-12-20 10:15
681 查看
本示例演示在Android中实现带渐显按钮的左右滑动效果。
先看下运行效果:
程序结构:
MainActivity文件中代码:
main.xml文件中代码:
push_left_in.xml文件中代码:
push_left_out.xml文件中代码:
push_right_in.xml文件中代码:
push_right_out.xml文件中代码:
最后,别忘记了在配置文件中设置权限。
转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html
先看下运行效果:
程序结构:
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
|
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
|
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 | } |
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 > |
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 > |
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 > |
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 > |
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
相关文章推荐
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- 如何在Android中实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android中实现带渐显左右按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android实现渐显按钮的左右滑动效果
- Android使用ViewPager实现左右循环滑动及轮播效果
- 使用NineOldAndroids 实现 Android ListView左右滑动删除效果
- android 开发零起步学习笔记(十三):Android 实现多页界面左右滑动切换效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android实现左右滑动指引效果
- Android中实现左右滑动的指引效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果