亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android仿微信滑動退出Activity

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

效果圖:


原理:

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

ActivityStack:

        實(shí)現(xiàn) Application.ActivityLifecycleCallbacks 接口,在App的Application中注冊這個(gè)棧,當(dāng)App中的Activity新增或者刪除時(shí)會回調(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ù)第二個(gè)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中注冊這個(gè)實(shí)現(xiàn)類

registerActivityLifecycleCallbacks(mBackStack); 

DecorView:

        1.DecorView 為整個(gè)Window界面的最頂層View

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

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

滑動:

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

DEMO:

        https://github.com/gumingwei/SwipeBackActivity

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

相關(guān)文章

最新評論