Android 图片全屏滑动效果

来源:互联网 发布:会议抽奖软件 编辑:程序博客网 时间:2024/04/30 05:25

修改一下代码,还可以有幻灯片效果。

package com.h3c.my;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.Window;import android.view.animation.AnimationUtils;import android.widget.Gallery.LayoutParams;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.Toast;import android.widget.ViewSwitcher;public class MyGalleryActivity extends Activity implementsViewSwitcher.ViewFactory {private ImageSwitcher mSwitcher;private int mPosition = 0;private GestureDetector mGestureDetector;private Handler _handle;private Runnable _runable;private static final float HORIZONTAL_SCROLL_DISTANCE = 10f;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);mSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitch);mSwitcher.setFactory(this);setupOnTouchListeners(findViewById(R.id.rootview));mSwitcher.setImageResource(mImageIds[mPosition]);_handle = new Handler();_runable = new Runnable() {@Overridepublic void run() {if (mPosition == (mImageIds.length - 1)) {Toast.makeText(MyGalleryActivity.this, "最后一张", 0).show();} else {mSwitcher.setInAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this, R.anim.slide_in_right));mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this, R.anim.slide_out_left));mSwitcher.setImageResource(mImageIds[++mPosition]);_handle.postDelayed(_runable, 3000);}}};}private void setupOnTouchListeners(View rootView) {mGestureDetector = new GestureDetector(this, new MyGestureListener());OnTouchListener rootListener = new OnTouchListener() {public boolean onTouch(View v, MotionEvent event) {mGestureDetector.onTouchEvent(event);// We do not use the return value of// mGestureDetector.onTouchEvent because we will not receive// the "up" event if we return false for the "down" event.return true;}};rootView.setOnTouchListener(rootListener);}public void onPause() {super.onPause();_handle.removeCallbacks(_runable);}private class MyGestureListener extendsGestureDetector.SimpleOnGestureListener {@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (Math.abs(velocityY) <= Math.abs(velocityX)&& Math.abs(velocityX) > HORIZONTAL_SCROLL_DISTANCE) {//System.out.println(velocityX);if (velocityX > 0) {if (mPosition > 0) {_handle.removeCallbacks(_runable);//mSwitcher.setInAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this, R.anim.slide_in_left));mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this,R.anim.slide_out_right));mSwitcher.setImageResource(mImageIds[--mPosition]);}} else {if (mPosition < (mImageIds.length - 1)) {_handle.removeCallbacks(_runable);mSwitcher.setInAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this, R.anim.slide_in_right));mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MyGalleryActivity.this, R.anim.slide_out_left));mSwitcher.setImageResource(mImageIds[++mPosition]);} else if (mPosition == (mImageIds.length - 1)) {_handle.removeCallbacks(_runable);Toast.makeText(MyGalleryActivity.this, "注册", 0).show();return true;}}}return true;}}private Integer[] mImageIds = { R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.d, R.drawable.e, R.drawable.f };@Overridepublic View makeView() {ImageView i = new ImageView(this);i.setBackgroundColor(0xFF000000);i.setScaleType(ImageView.ScaleType.FIT_XY);i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));return i;}}


原创粉丝点击