最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android仿微信滑動(dòng)退出Activity

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

效果圖:


原理:

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

ActivityStack:

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

滑動(dòng):

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

DEMO:

        https://github.com/gumingwei/SwipeBackActivity

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

相關(guān)文章

最新評(píng)論

镇安县| 景德镇市| 玉山县| 浦江县| 常德市| 洪雅县| 张北县| 灵武市| 辉县市| 通化县| 东海县| 忻州市| 黑龙江省| 高雄市| 靖江市| 巴里| 镇沅| 尉氏县| 东丽区| 日照市| 仪陇县| 阳原县| 平顶山市| 邢台县| 富源县| 黄骅市| 安溪县| 洪雅县| 金秀| 澄迈县| 临城县| 南乐县| 罗定市| 两当县| 桂平市| 德昌县| 金湖县| 蚌埠市| 株洲县| 惠东县| 琼海市|