Android 圖片全屏滑動效果
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 implements
ViewSwitcher.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; @Override public 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() { @Override public 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 extends GestureDetector.SimpleOnGestureListener { @Override public 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 }; @Override public 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; }
} </pre>
本文由用戶 m8x2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!