在android的图片的浏览时候经常使用。最近在网上查找资料自己也做一个如下:

package com.easyway.buttonpageflipper;import com.easyway.buttonpageflipper.R;import android.app.Activity;import android.graphics.PixelFormat;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;/** * Android实现带渐显按钮的左右滑动效果 自然状态下按钮不可见,触摸屏幕时显示按钮 *  * @author longgangbai *  */public class ButtonpageflipperActivity extends Activity implements OnGestureListener{// 声明两个按钮,分别代表向左和向右滑动private ImageView btnLeft = null;private ImageView btnRight = null;// 设置WindowManagerprivate WindowManager wm = null;private WindowManager.LayoutParams wmParams = null;// ImageView的alpha值private int mAlpha = 0;private boolean isHide;private ViewFlipper viewFlipper = null;private GestureDetector detector;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setTitle("Android实现渐显按钮的左右滑动效果");viewFlipper = (ViewFlipper) this.findViewById(R.id.myViewFlipper);detector = new GestureDetector(this);// 初始化左右按钮initImageButtonView();viewFlipper.addView(addImageView(R.drawable.photo1));viewFlipper.addView(addImageView(R.drawable.photo2));viewFlipper.addView(addImageView(R.drawable.photo3));viewFlipper.addView(addImageView(R.drawable.photo4));viewFlipper.addView(addImageView(R.drawable.photo5));} private View addImageView(int id) {ImageView iv = new ImageView(this);iv.setImageResource(id);return iv;}/** * 初始化悬浮按钮 */private void initImageButtonView() {// 获取WindowManagerwm = (WindowManager) getApplicationContext().getSystemService("window");// 设置LayoutParams相关参数wmParams = new WindowManager.LayoutParams();// 设置window typewmParams.type = LayoutParams.TYPE_PHONE;// 设置图片格式,效果为背景透明wmParams.format = PixelFormat.RGBA_8888;// 设置Window flag参数wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL| LayoutParams.FLAG_NOT_FOCUSABLE;// 设置x、y初始值wmParams.x = 0;wmParams.y = 0;// 设置窗口长宽数据wmParams.width = 50;wmParams.height = 50;// 创建左右按钮createLeftButtonView();createRightButtonView();}/** * 设置左边按钮 */private void createLeftButtonView() {btnLeft = new ImageView(this);btnLeft.setImageResource(R.drawable.left);btnLeft.setAlpha(0);btnLeft.setOnClickListener(new View.OnClickListener() {public void onClick(View arg0) {// 上一个图像viewFlipper.setInAnimation(ButtonpageflipperActivity.this,R.anim.push_left_in);viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,R.anim.push_left_out);viewFlipper.showPrevious();}});// 调整窗口wmParams.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;// 显示图像wm.addView(btnLeft, wmParams);}/** * 设置右边按钮 */private void createRightButtonView() {btnRight = new ImageView(this);btnRight.setImageResource(R.drawable.right);btnRight.setAlpha(0);btnRight.setOnClickListener(new View.OnClickListener() {public void onClick(View arg0) {// 下一个图像viewFlipper.setInAnimation(ButtonpageflipperActivity.this,R.anim.push_right_in);viewFlipper.setOutAnimation(ButtonpageflipperActivity.this,R.anim.push_right_out);viewFlipper.showNext();}});// 调整窗口wmParams.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;// 显示图像wm.addView(btnRight, wmParams);}/** * 设置按钮渐显效果 */private Handler mHandler = new Handler() {public void handleMessage(Message msg) {if (msg.what == 1 && mAlpha < 255) {// 通过设置不透明度设置按钮的渐显效果mAlpha += 50;if (mAlpha > 255)mAlpha = 255;btnLeft.setAlpha(mAlpha);btnLeft.invalidate();btnRight.setAlpha(mAlpha);btnRight.invalidate();if (!isHide && mAlpha < 255)mHandler.sendEmptyMessageDelayed(1, 100);} else if (msg.what == 0 && mAlpha > 0) {mAlpha -= 10;if (mAlpha < 0)mAlpha = 0;btnLeft.setAlpha(mAlpha);btnLeft.invalidate();btnRight.setAlpha(mAlpha);btnRight.invalidate();if (isHide && mAlpha > 0)mHandler.sendEmptyMessageDelayed(0, 800);}}};private void showImageButtonView() {isHide = false;mHandler.sendEmptyMessage(1);}private void hideImageButtonView() {new Thread() {public void run() {try {Thread.sleep(1500);isHide = true;mHandler.sendEmptyMessage(0);} catch (Exception e) {;}}}.start();}@Overridepublic boolean onTouchEvent(MotionEvent event) {this.detector.onTouchEvent(event);switch (event.getAction()) {case MotionEvent.ACTION_MOVE:case MotionEvent.ACTION_DOWN:showImageButtonView();break;case MotionEvent.ACTION_UP:hideImageButtonView();break;}return true;}@Overridepublic void onDestroy() {super.onDestroy();// 在程序退出(Activity销毁)时销毁窗口wm.removeView(btnLeft);wm.removeView(btnRight);}  @Overridepublic boolean onDown(MotionEvent e) {// TODO Auto-generated method stubreturn false;}        @Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() - e2.getX() > 120) {this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));this.viewFlipper.showNext();return true;} else if (e1.getX() - e2.getX() < -120) {this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));this.viewFlipper.showPrevious();return true;}return false;}        @Override    public void onLongPress(MotionEvent e) {    // TODO Auto-generated method stub        }        @Override    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,    float distanceY) {    // TODO Auto-generated method stub    return false;    }        @Override    public void onShowPress(MotionEvent e) {    // TODO Auto-generated method stub        }        @Override    public boolean onSingleTapUp(MotionEvent e) {    // TODO Auto-generated method stub    return false;    }}

更多相关文章

  1. android 2.2 apidemos 赏析笔记 4
  2. windows 系统Android模拟器联网设置
  3. android EditText 设置输入的文字的格式方式
  4. Android对话框AlertDialog-android学习之旅(四十二)
  5. Android(安卓)天气预报图文字幕垂直滚动效果
  6. Android(安卓)分割线
  7. android 设置时区
  8. android样式学习(二) android给listview设置分割线Divider样式
  9. Android(安卓)网络开发详解

随机推荐

  1. ch07 Android 日期与时间对话框
  2. Android的SwitchCompat和Switch
  3. Android Studio App LinearLayout多层布
  4. android细节知识小点(动态更新)
  5. android 获取网络上服务器图片
  6. android中IO操作数据总结
  7. Android在自己的程序中调用外部程序
  8. android 记得用mkdirs不要用mkdir
  9. android 拖拽图片&拖动浮动按钮到处跑
  10. Android -- EditText插入表情