国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿微信滑動退出Activity

2019-12-12 04:11:36
字體:
來源:轉載
供稿:網友

效果圖:


原理:

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

ActivityStack:

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

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);     }   }   /**    * 獲取棧頂的Activity    *    * @return    */   public Activity getLastActivity() {     return mActivityStack.lastElement();   }   /**    * 獲取倒數第二個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中注冊這個實現類

registerActivityLifecycleCallbacks(mBackStack); 

DecorView:

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

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

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

滑動:

        重寫Activity的dispatchTouchEvent,設定一個閥值,在閥值內出發時拿到上一個Activity的ContentView添加到當前的DecorView中,index為0,置于最低定。滑動的過程中動態改變容器的X值,讓其做出平移效果,松開手之后做取消或者關閉動畫。動畫結束后把前面拿到的ContentView歸還。

DEMO:

        https://github.com/gumingwei/SwipeBackActivity

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗城| 安庆市| 新兴县| 濮阳市| 江油市| 丹东市| 巴林左旗| 海宁市| 镇原县| 灵宝市| 乳源| 农安县| 翁牛特旗| 抚州市| 丰原市| 邵阳市| 蒲城县| 涡阳县| 浏阳市| 马龙县| 沾益县| 景泰县| 长丰县| 和龙市| 唐山市| 日土县| 德化县| 增城市| 留坝县| 斗六市| 鸡西市| 华安县| 德化县| 黄梅县| 平塘县| 嘉祥县| 醴陵市| 贺兰县| 沙洋县| 浑源县| 张家界市|