Android 6.0添加最近使用应用列表“全部清除”功能

+++ b/LINUX/android/frameworks/base/packages/SystemUI/res/layout/recents.xml
@@ -54,4 +54,16 @@
         android:layout_gravity="center_horizontal|bottom"
         android:scaleType="fitXY"
         android:src="@drawable/recents_lower_gradient" />
+    <Button
+        android:id="@+id/clean_all_recent_apps"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="25dp"
+        android:layout_marginRight="60dp"
+        android:padding="15dp"
+        android:layout_gravity="right"
+        android:background="#00000000"
+        android:text="@string/clear_all_notifications_text"
+        android:textColor="#ffffff"
+        android:textSize="15dp" />
 </FrameLayout>
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -83,6 +83,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
 
     // Runnable to be executed after we paused ourselves
     Runnable mAfterPauseRunnable;
+    private View mClearRecent;
 
     /**
      * A common Runnable to finish Recents either by calling finish() (with a custom animation) or
@@ -248,13 +249,16 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
                 mEmptyView = mEmptyViewStub.inflate();
             }
             mEmptyView.setVisibility(View.VISIBLE);
+            mClearRecent.setVisibility(View.GONE);
             mRecentsView.setSearchBarVisibility(View.GONE);
         } else {
             if (mEmptyView != null) {
                 mEmptyView.setVisibility(View.GONE);
+                mClearRecent.setVisibility(View.VISIBLE);
             }
             if (mRecentsView.hasValidSearchBar()) {
                 mRecentsView.setSearchBarVisibility(View.VISIBLE);
+                mClearRecent.setVisibility(View.GONE);
             } else {
                 refreshSearchWidgetView();
             }
@@ -353,6 +357,15 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
 
         // Set the Recents layout
         setContentView(R.layout.recents);
+        mClearRecent = findViewById(R.id.clean_all_recent_apps);
+        if(mClearRecent != null){
+            mClearRecent.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    mRecentsView.dismissAllTasksAnimated();
+                }
+            });
+        }
         mRecentsView = (RecentsView) findViewById(R.id.recents_view);
         mRecentsView.setCallbacks(this);
         mRecentsView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -719,4 +719,14 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
             stackView.onPackagesChanged(monitor, packageName, userId);
         }
     }
+    public void dismissAllTasksAnimated() {
+        int childCount = getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = getChildAt(i);
+            if (child != mSearchBar) {
+                TaskStackView stackView = (TaskStackView) child;
+                stackView.dismissAllTasks();
+            }
+        }
+    }
 }
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -1466,4 +1466,30 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
             }
         }
     }
+    public void dismissAllTasks() {
+        post(new Runnable() {
+            @Override
+            public void run() {
+                ArrayList<Task> tasks = new ArrayList<Task>();
+                tasks.addAll(mStack.getTasks());
+
+                // Remove visible TaskViews
+                int childCount = getChildCount();
+                for (int i = 0; i < childCount; i++) {
+                    TaskView tv = (TaskView) getChildAt(i);
+                    tasks.remove(tv.getTask());
+                    tv.dismissTask();
+                }
+
+                int size = tasks.size();
+                // Remove any other Tasks
+                for (int i = 0; i < size; i++) {
+                    Task t = tasks.get(i);
+                    if (mStack.getTasks().contains(t)) {
+                        mStack.removeTask(t);
+                    }
+                }
+            }
+        });
+    }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值