Loading go/quickstep/res/layout/task_item_view.xml 0 → 100644 +37 −0 Original line number Diff line number Diff line <?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> go/quickstep/src/com/android/quickstep/TaskAdapter.java +6 −4 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading go/quickstep/src/com/android/quickstep/TaskHolder.java +8 −10 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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); } } go/quickstep/src/com/android/quickstep/views/TaskItemView.java 0 → 100644 +64 −0 Original line number Diff line number Diff line /* * 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 } } Loading
go/quickstep/res/layout/task_item_view.xml 0 → 100644 +37 −0 Original line number Diff line number Diff line <?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>
go/quickstep/src/com/android/quickstep/TaskAdapter.java +6 −4 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading
go/quickstep/src/com/android/quickstep/TaskHolder.java +8 −10 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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); } }
go/quickstep/src/com/android/quickstep/views/TaskItemView.java 0 → 100644 +64 −0 Original line number Diff line number Diff line /* * 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 } }