`
小杨学JAVA
  • 浏览: 900673 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

手势跳转activity

 
阅读更多
转自
http://www.xue5.com/Mobile/Android/672426.html

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class ActivityMain extends TabActivity {
	private TabSpec tabSpec;
	private TabHost tabHost;
	private Intent intent;
	private static final int SWIPE_MIN_DISTANCE = 120;
	private static final int SWIPE_MAX_OFF_PATH = 250;
	private static final int SWIPE_THRESHOLD_VELOCITY = 200;
	private GestureDetector gestureDetector;
	View.OnTouchListener gestureListener;

	int currentView = 0;
	private static int maxTabIndex = 2;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_main);
		UtilVar.activities.add(ActivityMain.this);
		this.initTableHost();

		gestureDetector = new GestureDetector(new MyGestureDetector());
		gestureListener = new View.OnTouchListener() {
			public boolean onTouch(View v, MotionEvent event) {
				if (gestureDetector.onTouchEvent(event)) {
					return true;
				}
				return false;
			}
		};

	}

	/**
	 * tablehost的初始化,代码完成
	 */
	private void initTableHost() {
		tabHost = super.getTabHost();
		// 歌曲列表
		intent = new Intent(ActivityMain.this, ActivityList.class);
		tabSpec = tabHost
				.newTabSpec("歌曲列表")
				.setIndicator("歌曲列表",
						getResources().getDrawable(R.drawable.ic_launcher))
				.setContent(intent);
		tabHost.addTab(tabSpec);
		// 正在播放
		intent = new Intent(ActivityMain.this, ActivityPlaying.class);
		tabSpec = tabHost
				.newTabSpec("正在播放")
				.setIndicator("正在播放",
						getResources().getDrawable(R.drawable.ic_launcher))
				.setContent(intent);
		tabHost.addTab(tabSpec);
		// 专辑列表
		intent = new Intent(ActivityMain.this, ActivityLyric.class);
		tabSpec = tabHost
				.newTabSpec("歌词显示")
				.setIndicator("歌词显示",
						getResources().getDrawable(R.drawable.ic_launcher))
				.setContent(intent);
		tabHost.addTab(tabSpec);
		// 设置当前tab
		tabHost.setCurrentTab(1);
	}

	// 左右滑动刚好页面也有滑动效果
	class MyGestureDetector extends SimpleOnGestureListener {
		@Override
		public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
				float velocityY) {
			TabHost tabHost = getTabHost();
			try {
				if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
					return false;
				// right to left swipe
				if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
						&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
					Log.i("test", "right");
					if (currentView == maxTabIndex) {
						currentView = 0;
					} else {
						currentView++;
					}
					tabHost.setCurrentTab(currentView);
				} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
						&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
					Log.i("test", "left");
					if (currentView == 0) {
						currentView = maxTabIndex;
					} else {
						currentView--;
					}
					tabHost.setCurrentTab(currentView);
				}
			} catch (Exception e) {
			}
			return false;
		}
	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent event) {
		if (gestureDetector.onTouchEvent(event)) {
			event.setAction(MotionEvent.ACTION_CANCEL);
		}
		return super.dispatchTouchEvent(event);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}
// 主要代码就这样吧,以后就不必到处找手势跳转activity的例子了。
分享到:
评论

相关推荐

    Android通过滑动实现Activity跳转(手势识别器应用)

    在Android开发中,实现Activity之间的跳转通常使用Intent对象,但为了提供更加丰富的用户体验,我们可以通过手势识别器(GestureDetector)来实现用户滑动时的界面转跳。下面将详细介绍如何利用手势识别器来实现这一...

    Activity跳转和图片放大缩小DEMO

    Activity跳转是Android应用中常见的操作,用于在不同的界面之间切换,实现应用的功能流转。本DEMO展示了如何在主页面(MainActivity)上设置按钮或菜单项,通过Intent对象来触发对其他Activity的启动,从而实现页面...

    Activity左右滑动跳转功能

    而"Activity左右滑动跳转功能"是一种增强用户体验的设计,让用户可以通过简单的手势操作在不同的Activity之间切换,而不是仅依赖于传统的按钮点击。这个特性常见于许多现代移动应用,特别是在那些强调流畅过渡效果和...

    android activity的一些特效

    7. **透明和半透明效果**:通过调整Activity的窗口属性(如`android:windowBackground`、`android:alpha`等),可以创建透明或半透明的Activity,这样在跳转时可以展示底层Activity的部分内容,达到特殊视觉效果。...

    android随着手势的滑动而滑动的效果

    `onTouchEvent()`是Activity或ViewGroup中的方法,用于接收用户的触摸操作。当用户在屏幕上滑动手指时,系统会连续发送ACTION_DOWN、ACTION_MOVE和ACTION_UP等事件。开发者需要在`onTouchEvent()`中捕获这些事件,...

    activity左滑返回

    在多层级的导航结构中,Activity之间的跳转构成了应用的主要流程。 **二、左滑返回的实现原理** 左滑返回的实现主要涉及手势检测和Activity栈管理。当用户在屏幕边缘滑动时,应用需要捕获这一手势,并判断其意图是...

    点击图片跳转页面

    在iOS的Swift项目中,我们可以在Storyboard中为UIImageView添加一个手势识别器(Tap Gesture Recognizer),并连接到ViewController的相应方法: ```swift @IBAction func imageTapped(_ sender: ...

    图片标注可缩放点击跳转

    如果是,那么启动一个新的Activity或者Intent,执行相应的跳转操作。这通常涉及到坐标转换,因为用户触摸屏幕的坐标需要转换成图片上的坐标,才能确定是否击中了标注。 为了提高用户体验,我们还需要考虑一些额外的...

    android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    实现跳转功能通常有两种方式:一是直接使用Intent启动新的Activity;二是通过FragmentTransaction替换当前Fragment。具体选择哪种方式取决于项目结构和需求。 **6. 自定义滑动手势** 如果默认的滑动行为不满足需求...

    Android-LikeELMLeftLoad仿饿了么左滑跳转

    这涉及到Activity的onSaveInstanceState()和onRestoreInstanceState()方法的使用,以及Parcelable接口的实现,以便在Activity重建时恢复视图状态。 6. **自定义ViewGroup**:可能需要自定义一个ViewGroup,如...

    activity测试

    8. **多Activity交互**:如果应用包含多个Activity,测试它们之间的跳转逻辑和数据传递,确保没有内存泄漏或异常抛出。 9. **权限管理**:对于需要特定权限的Activity,如访问相机、位置等,确保在权限未授予时有...

    Android手势密码--设置和校验功能的实现代码

    用户选择“确定”后,将跳转到`GestureEditActivity`,这是一个专门用于设置手势的活动。在这个活动中,用户可以在网格上画出自己的手势,然后保存这个手势作为密码。 ```java new AlertDialog.Builder...

    Android应用源码之通过手势对图片进行任意放大绽放旋转-IT计算机-毕业设计.zip

    - 动画可以帮助在缩放和旋转时平滑地更新图片的大小和角度,而不是立即跳转到新状态,从而增加视觉的连贯性。 5. **毕业设计与论文撰写**: - 这个项目的目的是作为毕业设计的一部分,因此在完成代码实现的同时,...

    转场动画 在界面跳转时实现3d跳转

    本篇文章将详细探讨“转场动画在界面跳转时实现3D跳转”的技术要点和实现方法。 首先,我们要理解什么是转场动画。转场动画是指在两个界面之间进行切换时,通过特定的动画效果来展现这种过渡,它可以使用户明确感知...

    Android程序打开启指定页面,比如密码锁

    3. 将手势验证逻辑整合到启动Activity中,只有手势正确才能进入主应用界面。 五、异常处理和用户体验 1. 考虑到用户可能会忘记密码,需要提供找回密码或重置密码的机制。 2. 在密码验证失败时,应给予友好的提示,...

    SlideSwitch.zip

    1. 实现原理:通常,我们使用Intent在Activity之间跳转,但在这个项目中,我们通过监听触摸事件(MotionEvent)来捕捉滑动手势。当用户在屏幕上滑动时,程序会分析滑动的方向和速度,以判断是否触发Activity的切换。...

    android歌词滚动显示,上下滑动跳转DEMO

    最后,DEMO项目中的“lrcScrollDemo”可能包含了一个完整的Android工程,包括Activity、布局XML、自定义View以及解析和播放逻辑的Java类。开发者可以下载并研究这个DEMO,了解其具体的实现方式,这对于学习Android ...

    手势实现播放器的进度和音量调节.zip安卓程序源码资源下载

    - 对MediaPlayer的管理需要考虑Activity或Fragment的生命周期,确保在适当的时候初始化、释放资源,防止内存泄漏。 以上就是基于给定标题和描述中涉及的主要Android开发知识点。这个源码资源对于学习Android手势...

Global site tag (gtag.js) - Google Analytics