Android 图片全屏滑动效果

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

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 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;
	}
}
时间: 2024-10-29 20:15:17

Android 图片全屏滑动效果的相关文章

关于微信上网页图片点击全屏放大效果_javascript技巧

实现微信上网页的图片点击后全屏还可以可以缩放,这个功能是别人做的,可是捏点击后屏幕直接黑屏了,图片没有显示出来.这个代码在网上搜一下,挺多类似的. 先上代码. function arrayToJson(o) { var r = []; if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\

Android 欢迎全屏图片详解及实例代码

Android 欢迎全屏图片详解 其实欢迎界面就是在主Activity之前再添加一个欢迎的Activity.在这个Activity中实现欢迎界面,和其他的Activity用法 是基本一样,只有细微的差别. 1.在Activity的onCreate方法中实现: @Override ic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /**全屏设置,隐藏窗口所有装饰**/ getWindo

Android PopupWindow全屏详细介绍及实例代码_Android

 Android PopupWindow全屏 很多应用中经常可以看到弹出这种PopupWindow的效果,做了一个小demo分享一下.demo的思路是通过遍历文件,找到图片以及图片文件夹放置在PopupWindow上面.点击按钮可以弹出这个PopupWindow,这里为PopupWindow设置了动画. PopupWindow全屏代码提要 受限需要自定义Popupwindow,这里不看Popupwindow里面要展示的内容,主要是设置Popupwindow的高度. public class Po

Android 实现全屏和无标题栏的显示_Android

在Android实现没有标题栏的方法有两种: 在代码中添加 requestWindowFeature(Window.FEATURE_NO_TITLE): 在清单文件AndroidManifest.xml中添加 android:theme="@android:style/Theme.NoTitleBar" 具体的代码如下: 第一种: MainActivity.java package com.lingdududu.test; import android.app.Activity; im

jQuery插件fullPage.js实现全屏滚动效果_jquery

本文实例为大家分享了全屏滚动插件fullPage.js的具体使用方法,供大家参考,具体内容如下 0.01 基本演示  的HTML 布局 以及js 代码 //需要连接 连接的三个文件 <link rel="stylesheet" href="css/jquery.fullPage.css"> //css文件 <script src="js/jquery-1.8.3.min.js"></script> //jQue

基于jquery实现全屏滚动效果_javascript技巧

那么今天就来介绍这款fullPage,与fullPage.js是不同的,fullpage兼容性更佳,能向下兼容到IE6, 不依赖任何 js 库,可独立使用.功能上虽然不如 fullPage.js 强大,但一般使用已经足够了,尤其是它的动画效果,你可以自由设定缩放.旋转以产生各种各样的动画效果.同时它还支持 fullPage.js 所没有的水平滚动. 兼容桌面端(ie5.5+) 和 手机端 你可以用它来构建你的个人主页或者网页应用 这是一个不使用jQuery小巧的框架 不到9KB 再介绍之前先看一

android设置全屏与取消全屏方法

android提供了两种方式来实现无标题栏和全屏效果,即通过xml文件声明的方式或在程序中动态控制的方式. android设置全屏方法 一.通过程序设置:  代码如下 复制代码     package com.hhh.changeimage:     import android.app.Activity;     import android.os.Bundle;     import android.view.Window;     import android.view.WindowMan

Swift导航控制器(navigationController)全屏滑动返回功能实现

navigationController(导航控制器)的view自带了滑动手势,只要在屏幕左侧向右拖动页面,就可以滑动返回到前面一个页面.但这个功能仅在屏幕左侧边缘滑动才能触发,我们可以稍作改造,让其支持全屏滑动返回. 1,全屏滑动返回实现原理 (1)系统自带的手势是 UIScreenEdgePanGestureRecognizer 类型对象,看名字就知道这个是屏幕边缘滑动手势.所以系统自带的滑动效果,自然只能实现侧边滑动. (2)我们自己给导航控制器,添加一个全屏的滑动手势.然后用新添加的滑动

Xamarin 中开发Android实现全屏或者不显示标题栏的方法-宋兴柱

原文:Xamarin 中开发Android实现全屏或者不显示标题栏的方法-宋兴柱 using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace AndroidDemo { [Activity(Label = "Android", MainLaunche