Add task item view for Recents Go.
Add a task item view for the recycler view to inflate when task data updates. Currently, the adapter only binds the icon and label. Thumbnails will be handled in a separate CL. Bug: 114136250 Test: Manual test Launcher3GoIconRecents Change-Id: Iaff2001fbbf0a3fc6f5781f90b336bee43f9076e
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2019 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.quickstep.views.TaskItemView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/task_icon_and_thumbnail"
|
||||
android:layout_width="@dimen/task_thumbnail_icon_size"
|
||||
android:layout_height="@dimen/task_thumbnail_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginHorizontal="8dp"/>
|
||||
<TextView
|
||||
android:id="@+id/task_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginHorizontal="8dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp"/>
|
||||
</com.android.quickstep.views.TaskItemView>
|
||||
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView.Adapter;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.views.TaskItemView;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Recycler view adapter that dynamically inflates and binds {@link TaskHolder} instances with the
|
||||
* appropriate {@link Task} from the recents task list.
|
||||
@@ -42,8 +43,9 @@ public final class TaskAdapter extends Adapter<TaskHolder> {
|
||||
@Override
|
||||
public TaskHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
// TODO: Swap in an actual task view here (view w/ icon, label, etc.)
|
||||
TextView stubView = new TextView(parent.getContext());
|
||||
return new TaskHolder(stubView);
|
||||
TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.task_item_view, parent, false);
|
||||
return new TaskHolder(itemView);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
||||
|
||||
import com.android.quickstep.views.TaskItemView;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
|
||||
/**
|
||||
@@ -27,22 +26,21 @@ import com.android.systemui.shared.recents.model.Task;
|
||||
*/
|
||||
final class TaskHolder extends ViewHolder {
|
||||
|
||||
// TODO: Implement the actual task view to be held.
|
||||
// For now, we just use a simple text view.
|
||||
private final TextView mStubView;
|
||||
private final TaskItemView mTaskItemView;
|
||||
|
||||
public TaskHolder(TextView stubView) {
|
||||
super(stubView);
|
||||
mStubView = stubView;
|
||||
public TaskHolder(TaskItemView itemView) {
|
||||
super(itemView);
|
||||
mTaskItemView = itemView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind task content to the view. This includes the task icon and title as well as binding
|
||||
* input handlers such as which task to launch/remove.
|
||||
*
|
||||
* @param task the task to bind to the view this
|
||||
* @param task the task to bind to the view
|
||||
*/
|
||||
public void bindTask(Task task) {
|
||||
mStubView.setText("Stub task view: " + task.titleDescription);
|
||||
mTaskItemView.setLabel(task.titleDescription);
|
||||
mTaskItemView.setIcon(task.icon);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.quickstep.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
|
||||
/**
|
||||
* View representing an individual task item with the icon + thumbnail adjacent to the task label.
|
||||
*/
|
||||
public final class TaskItemView extends LinearLayout {
|
||||
|
||||
private TextView mLabelView;
|
||||
private ImageView mIconView;
|
||||
|
||||
public TaskItemView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
mLabelView = findViewById(R.id.task_label);
|
||||
mIconView = findViewById(R.id.task_icon_and_thumbnail);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the label for the task item.
|
||||
*
|
||||
* @param label task label
|
||||
*/
|
||||
public void setLabel(String label) {
|
||||
mLabelView.setText(label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the icon for the task item.
|
||||
*
|
||||
* @param icon task icon
|
||||
*/
|
||||
public void setIcon(Drawable icon) {
|
||||
mIconView.setImageDrawable(icon);
|
||||
// TODO: Add in combination drawable for icon + thumbnail
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user