diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java index 0dc955afc..e63d38671 100644 --- a/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java +++ b/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java @@ -77,7 +77,6 @@ public abstract class BaseActivity extends AppCompatActivity implements FragmentTransaction transaction = fragmentManager.beginTransaction() .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); if (mode == Mode.LAUNCH) { - transaction.replace(R.id.fragment_container, new CurrentTaskFragment()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { TreeFragment currentTaskFragment = new TreeFragment(); Bundle args = new Bundle(); diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/InlineAdapter.java b/samples/IntentPlayground/src/com/example/android/intentplayground/InlineAdapter.java index 456cbfb0c..12f8fb94c 100644 --- a/samples/IntentPlayground/src/com/example/android/intentplayground/InlineAdapter.java +++ b/samples/IntentPlayground/src/com/example/android/intentplayground/InlineAdapter.java @@ -16,6 +16,10 @@ package com.example.android.intentplayground; + +import android.app.ActivityManager; +import android.app.ActivityManager.AppTask; +import android.app.ActivityManager.RecentTaskInfo; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; @@ -27,7 +31,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; import androidx.recyclerview.widget.RecyclerView; import com.example.android.intentplayground.InlineAdapter.TaskViewHolder; @@ -38,13 +41,32 @@ import java.util.List; public class InlineAdapter extends RecyclerView.Adapter { private final List mTasks; + private int mCurrentTaskIndex; private FragmentActivity mActivity; public InlineAdapter(Node tree, FragmentActivity activity) { this.mActivity = activity; this.mTasks = tree.mChildren; + this.mCurrentTaskIndex = indexOfRunningTask(); } + public int indexOfRunningTask() { + List appTasks = mActivity.getSystemService(ActivityManager.class).getAppTasks(); + RecentTaskInfo currentTask = appTasks.get(0).getTaskInfo(); + + int index = 0; + for (int i = 0; i < mTasks.size(); i++) { + Node task = mTasks.get(i); + if (task.mTaskId == currentTask.id) { + index = i; + break; + } + } + + return index; + } + + @NonNull @Override public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -55,7 +77,9 @@ public class InlineAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) { - holder.setTask(mTasks.get(position), mActivity.getSupportFragmentManager()); + boolean highLightRunningActivity = position == mCurrentTaskIndex; + holder.setTask(mTasks.get(position), mActivity.getSupportFragmentManager(), + highLightRunningActivity); } @Override @@ -74,18 +98,20 @@ public class InlineAdapter extends RecyclerView.Adapter { mActivitiesLayout = itemView.findViewById(R.id.activity_node_container); } - public void setTask(Node task, FragmentManager manager) { + public void setTask(Node task, FragmentManager manager, boolean highLightRunningActivity) { mTaskIdTextView.setText(task.mTaskId == Node.NEW_TASK_ID ? mTaskIdTextView.getContext().getString(R.string.new_task) : String.valueOf(task.mTaskId)); - mTaskIdTextView.setTextColor(mTaskIdTextView.getContext() + int taskColor = mTaskIdTextView.getContext() .getResources().getColor(ColorManager.getColorForTask(task.mTaskId), - null /* theme */)); + null /* theme */); + mTaskIdTextView.setTextColor(taskColor); mActivitiesLayout.removeAllViews(); for (Node activity : task.mChildren) { View activityView = LayoutInflater.from(mActivitiesLayout.getContext()) .inflate(R.layout.activity_node, mActivitiesLayout, false); + TextView activityName = activityView.findViewById(R.id.activity_name); ImageButton intentButtonView = activityView.findViewById(R.id.intent_button); @@ -109,6 +135,12 @@ public class InlineAdapter extends RecyclerView.Adapter { showDialogWithFlags(manager, activity.mName.getShortClassName(), flags); }); + + if (highLightRunningActivity) { + highLightRunningActivity = false; + activityName.setTextColor(taskColor); + } + mActivitiesLayout.addView(activityView); } }