欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android仿微信滑動退出Activity

 更新時間:2016年12月28日 10:46:35   作者:顧明偉  
這篇文章主要介紹了Android仿微信滑動退出Activity的相關資料,非常不錯,具有參考借鑒價值,需要的朋友參考下

效果圖:


原理:

        原理一句話就能描述清楚。重寫Activity的dispatchTouchEvent,滑動的時候拿到Activity棧中棧頂Activity的上一個Acticity的ContentView添加到棧頂Activity的DecorView中,滑動的過程中做視圖平移,滑動結(jié)束之后把前面拿過來用的ContentView歸還給上一個Activity,然后finish當前Activity。

ActivityStack:

        實現(xiàn) Application.ActivityLifecycleCallbacks 接口,在App的Application中注冊這個棧,當App中的Activity新增或者刪除時會回調(diào)接口中的方法。

public class ActivityBackStack implements Application.ActivityLifecycleCallbacks { 
  private Stack<Activity> mActivityStack; 
  public ActivityBackStack() { 
    mActivityStack = new Stack<>(); 
  } 
  @Override 
  public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
    mActivityStack.add(activity); 
  } 
  @Override 
  public void onActivityStarted(Activity activity) { 
  } 
  @Override 
  public void onActivityResumed(Activity activity) { 
  } 
  @Override 
  public void onActivityPaused(Activity activity) { 
  } 
  @Override 
  public void onActivityStopped(Activity activity) { 
  } 
  @Override 
  public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
  } 
  @Override 
  public void onActivityDestroyed(Activity activity) { 
    if (activity != null) { 
      mActivityStack.remove(activity); 
    } 
  } 
  /** 
   * 獲取棧頂?shù)腁ctivity 
   * 
   * @return 
   */ 
  public Activity getLastActivity() { 
    return mActivityStack.lastElement(); 
  } 
  /** 
   * 獲取倒數(shù)第二個Activity 
   * 
   * @return 
   */ 
  public Activity getPreActivty() { 
    int size = mActivityStack.size(); 
    if (size < 2) { 
      return null; 
    } 
    return mActivityStack.get(size - 2); 
  } 
  public int getSize() { 
    return mActivityStack.size(); 
  } 
}

然后在Application中注冊這個實現(xiàn)類

registerActivityLifecycleCallbacks(mBackStack); 

DecorView:

        1.DecorView 為整個Window界面的最頂層View

        2.DecorView只有一個子View LinearLayout,代表整個Window界面,包括ton通知欄,標題欄,和內(nèi)容區(qū)域。

        3.獲取DecorView:activity.getWindow().getDecorView()

滑動:

        重寫Activity的dispatchTouchEvent,設定一個閥值,在閥值內(nèi)出發(fā)時拿到上一個Activity的ContentView添加到當前的DecorView中,index為0,置于最低定?;瑒拥倪^程中動態(tài)改變?nèi)萜鞯腦值,讓其做出平移效果,松開手之后做取消或者關閉動畫。動畫結(jié)束后把前面拿到的ContentView歸還。

DEMO:

        https://github.com/gumingwei/SwipeBackActivity

以上所述是小編給大家介紹的Android仿微信滑動退出Activity,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

最新評論