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()
|
FragmentTransaction transaction = fragmentManager.beginTransaction()
|
||||||
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
|
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
|
||||||
if (mode == Mode.LAUNCH) {
|
if (mode == Mode.LAUNCH) {
|
||||||
transaction.replace(R.id.fragment_container, new CurrentTaskFragment());
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
TreeFragment currentTaskFragment = new TreeFragment();
|
TreeFragment currentTaskFragment = new TreeFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
package com.example.android.intentplayground;
|
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.content.Intent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -27,7 +31,6 @@ import android.widget.TextView;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.example.android.intentplayground.InlineAdapter.TaskViewHolder;
|
import com.example.android.intentplayground.InlineAdapter.TaskViewHolder;
|
||||||
@@ -38,13 +41,32 @@ import java.util.List;
|
|||||||
public class InlineAdapter extends RecyclerView.Adapter<TaskViewHolder> {
|
public class InlineAdapter extends RecyclerView.Adapter<TaskViewHolder> {
|
||||||
|
|
||||||
private final List<Node> mTasks;
|
private final List<Node> mTasks;
|
||||||
|
private int mCurrentTaskIndex;
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
|
|
||||||
public InlineAdapter(Node tree, FragmentActivity activity) {
|
public InlineAdapter(Node tree, FragmentActivity activity) {
|
||||||
this.mActivity = activity;
|
this.mActivity = activity;
|
||||||
this.mTasks = tree.mChildren;
|
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
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
@@ -55,7 +77,9 @@ public class InlineAdapter extends RecyclerView.Adapter<TaskViewHolder> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) {
|
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
|
@Override
|
||||||
@@ -74,18 +98,20 @@ public class InlineAdapter extends RecyclerView.Adapter<TaskViewHolder> {
|
|||||||
mActivitiesLayout = itemView.findViewById(R.id.activity_node_container);
|
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.setText(task.mTaskId == Node.NEW_TASK_ID
|
||||||
? mTaskIdTextView.getContext().getString(R.string.new_task)
|
? mTaskIdTextView.getContext().getString(R.string.new_task)
|
||||||
: String.valueOf(task.mTaskId));
|
: String.valueOf(task.mTaskId));
|
||||||
mTaskIdTextView.setTextColor(mTaskIdTextView.getContext()
|
int taskColor = mTaskIdTextView.getContext()
|
||||||
.getResources().getColor(ColorManager.getColorForTask(task.mTaskId),
|
.getResources().getColor(ColorManager.getColorForTask(task.mTaskId),
|
||||||
null /* theme */));
|
null /* theme */);
|
||||||
|
mTaskIdTextView.setTextColor(taskColor);
|
||||||
|
|
||||||
mActivitiesLayout.removeAllViews();
|
mActivitiesLayout.removeAllViews();
|
||||||
for (Node activity : task.mChildren) {
|
for (Node activity : task.mChildren) {
|
||||||
View activityView = LayoutInflater.from(mActivitiesLayout.getContext())
|
View activityView = LayoutInflater.from(mActivitiesLayout.getContext())
|
||||||
.inflate(R.layout.activity_node, mActivitiesLayout, false);
|
.inflate(R.layout.activity_node, mActivitiesLayout, false);
|
||||||
|
|
||||||
TextView activityName = activityView.findViewById(R.id.activity_name);
|
TextView activityName = activityView.findViewById(R.id.activity_name);
|
||||||
ImageButton intentButtonView = activityView.findViewById(R.id.intent_button);
|
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);
|
showDialogWithFlags(manager, activity.mName.getShortClassName(), flags);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
if (highLightRunningActivity) {
|
||||||
|
highLightRunningActivity = false;
|
||||||
|
activityName.setTextColor(taskColor);
|
||||||
|
}
|
||||||
|
|
||||||
mActivitiesLayout.addView(activityView);
|
mActivitiesLayout.addView(activityView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user