Replace current activity fragment with highlight

Test: Manual
Change-Id: Id85a26f56ea4a721791d481ca9a1ff130f090df7
This commit is contained in:
Liam Clark
2018-11-26 13:45:56 -08:00
parent f63bc32ae7
commit a0365534d3
2 changed files with 37 additions and 6 deletions

View File

@@ -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();

View File

@@ -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<TaskViewHolder> {
private final List<Node> 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<AppTask> 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<TaskViewHolder> {
@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<TaskViewHolder> {
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<TaskViewHolder> {
showDialogWithFlags(manager, activity.mName.getShortClassName(), flags);
});
if (highLightRunningActivity) {
highLightRunningActivity = false;
activityName.setTextColor(taskColor);
}
mActivitiesLayout.addView(activityView);
}
}