android 多个Activity滑动效果

  带有动画效果的滑动,大家都知道,应该使用WorkspaceView,而WorkspaceView必须使用View才能进行滑动。

那么多个Activity该如何做滑动效果呢?

  其实方法很简单,就是把Activity转换为View,下面就是Activity转换为View的代码:

 

 

	private View activityToView(Activity parent, Class<?> target, Bundle state) {

		LocalActivityManager mLocalActivityManager = new LocalActivityManager(
				parent, true);//new一个本地的activity管理器
		mLocalActivityManager.dispatchCreate(state);//这个state就是当前Activity的状态参数,就是onCreate(Bundle savedInstanceState)里面这个savedInstanceState
		mLocalActivityManager.dispatchResume();
		mLocalActivityManager.dispatchDestroy(true);

		Intent intent = new Intent(parent, target);

		final Window w = mLocalActivityManager.startActivity(target.getName(),
				intent);//取得一个window对象,以方便转换为View
		final View wd = w != null ? w.getDecorView() : null;//转换为view
		if (wd != null) {
			wd.setVisibility(View.VISIBLE);
			wd.setClickable(true);
			wd.setFocusable(true);
			wd.setFocusableInTouchMode(true);
			((ViewGroup) wd)
					.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
		}
		return wd;
	}

 

然后定义一个WorkspaceView把所有的activity转换为View加载进去:

 

work = new WorkspaceView(this, null) {
			@Override
			public boolean onTouchEvent(MotionEvent ev) {
				super.onTouchEvent(ev);

				switch (ev.getAction()) {
				case MotionEvent.ACTION_MOVE:
					  //处理移动事件

					break;

				case MotionEvent.ACTION_UP:

					//处理action_up事件

					break;

				}

				return true;

			}
		};

		work.setTouchSlop(16);//设置滑动距离
		// work.setBackgroundColor(getResources().getColor(R.color.main_contain_bgcolor));
                
                 //调用activityToView方法,加载所有的activity
		work.addView(activityToView(this, SmartdialerActivity.class,
				savedInstanceState));

		work.addView(activityToView(this, MainActivity.class,
				savedInstanceState));
		work.addView(smsGroupView);
		work.addView(activityToView(this, AutoReplyActivity.class,
				savedInstanceState));

 

ps:重要的我用红色字体标示了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值