Replace current activity fragment with highlight
Test: Manual Change-Id: Id85a26f56ea4a721791d481ca9a1ff130f090df7
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user