QQ可以在任何一个子页面,向右→滑动,可以返回上一个界面,也就相当于按了返回键,或者是Finish了当前的Activity.
这个是用Finish作为例子,模拟返回键原理同样如此.
关键:特效关键是要监听用户的手势,先判断手势,优先级必须最高,判断完手势,才决定是否返回,还是执行其他的事件
关于手势的处理可以看这个:http://blog.csdn.net/lmj623565791/article/details/39102591
要想优先级大于所有的View,则这个View必须是所有的Activity的父View.
一个方法是把重写一个ViewGroup,在每个布局中都添加这个ViewGroup.这个方法比较繁琐,却很实用
另外一个方法是:一般来说一个项目的所有的Activity都会继承一个BaseActivity,我们只要在BaseActivity中,重写setContentView方法,在这里把所有的View都变成一个View的子View
这个也可以达到这个效果
下面的例子是采用第二种方法
BaseActivity
package com.zy.tour;
import java.lang.reflect.Field;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.zy.tour.util.app.LApplication;
import com.zy.tour.util.http.ProgressUtil;
import com.zy.tour.util.ui.RightSlidLinearLayout;
import com.zy.tour.util.ui.RightTouchListtener;
@SuppressLint("ClickableViewAccessibility")
public abstract class BaseActivity extends Activity {
private RightSlidLinearLayout linearLayout;
int x = 0, sbar = 0;// 状态栏高度
@Override
protected v