Loading tests/UiBench/AndroidManifest.xml +9 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,15 @@ </activity> <activity android:name=".TrivialRecyclerViewActivity" android:label="General/Trivial Recycler ListView" > android:label="General/Trivial RecyclerView" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.android.test.uibench.TEST" /> </intent-filter> </activity> <activity android:name=".SlowBindRecyclerViewActivity" android:label="General/Slow Bind RecyclerView" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.android.test.uibench.TEST" /> Loading tests/UiBench/src/com/android/test/uibench/SlowBindRecyclerViewActivity.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.test.uibench; import android.content.Context; import android.os.Trace; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import com.android.test.uibench.recyclerview.RvBoxAdapter; import com.android.test.uibench.recyclerview.RvCompatListActivity; import java.util.concurrent.TimeUnit; public class SlowBindRecyclerViewActivity extends RvCompatListActivity { /** * Spin wait. Used instead of sleeping so a core is used up for the duration, and so * traces/sampled profiling show the sections as expensive, and not just a scheduling mistake. */ private static void spinWaitMs(long ms) { long start = System.nanoTime(); while (System.nanoTime() - start < TimeUnit.MILLISECONDS.toNanos(ms)); } @Override protected RecyclerView.LayoutManager createLayoutManager(Context context) { return new GridLayoutManager(context, 3); } @Override protected RecyclerView.Adapter createAdapter() { return new RvBoxAdapter(this, TextUtils.buildSimpleStringList()) { @Override public void onBindViewHolder(ViewHolder holder, int position) { Trace.beginSection("bind item " + position); spinWaitMs(3); super.onBindViewHolder(holder, position); Trace.endSection(); } }; } } tests/UiBench/src/com/android/test/uibench/recyclerview/RvBoxAdapter.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.test.uibench.recyclerview; import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.util.TypedValue; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RvBoxAdapter extends RecyclerView.Adapter<RvBoxAdapter.ViewHolder> { private int mBackground; private List<String> mValues; public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } @Override public String toString() { return super.toString() + " '" + mTextView.getText(); } } public RvBoxAdapter(Context context, String[] strings) { TypedValue val = new TypedValue(); if (context.getTheme() != null) { context.getTheme().resolveAttribute( android.R.attr.selectableItemBackground, val, true); } mBackground = val.resourceId; mValues = new ArrayList<>(); Collections.addAll(mValues, strings); } @Override public RvBoxAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final ViewHolder h = new ViewHolder(new TextView(parent.getContext())); h.mTextView.setMinimumHeight(128); h.mTextView.setPadding(20, 0, 20, 0); h.mTextView.setFocusable(true); h.mTextView.setBackgroundResource(mBackground); RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.leftMargin = 10; lp.rightMargin = 5; lp.topMargin = 20; lp.bottomMargin = 15; h.mTextView.setLayoutParams(lp); return h; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mTextView.setText(position + ":" + mValues.get(position)); holder.mTextView.setMinHeight((200 + mValues.get(position).length() * 10)); holder.mTextView.setBackgroundColor(getBackgroundColor(position)); } private int getBackgroundColor(int position) { switch (position % 4) { case 0: return Color.LTGRAY; case 1: return Color.RED; case 2: return Color.DKGRAY; case 3: return Color.BLUE; } return Color.TRANSPARENT; } @Override public int getItemCount() { return mValues.size(); } } tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import com.android.test.uibench.R; Loading Loading
tests/UiBench/AndroidManifest.xml +9 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,15 @@ </activity> <activity android:name=".TrivialRecyclerViewActivity" android:label="General/Trivial Recycler ListView" > android:label="General/Trivial RecyclerView" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.android.test.uibench.TEST" /> </intent-filter> </activity> <activity android:name=".SlowBindRecyclerViewActivity" android:label="General/Slow Bind RecyclerView" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.android.test.uibench.TEST" /> Loading
tests/UiBench/src/com/android/test/uibench/SlowBindRecyclerViewActivity.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.test.uibench; import android.content.Context; import android.os.Trace; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import com.android.test.uibench.recyclerview.RvBoxAdapter; import com.android.test.uibench.recyclerview.RvCompatListActivity; import java.util.concurrent.TimeUnit; public class SlowBindRecyclerViewActivity extends RvCompatListActivity { /** * Spin wait. Used instead of sleeping so a core is used up for the duration, and so * traces/sampled profiling show the sections as expensive, and not just a scheduling mistake. */ private static void spinWaitMs(long ms) { long start = System.nanoTime(); while (System.nanoTime() - start < TimeUnit.MILLISECONDS.toNanos(ms)); } @Override protected RecyclerView.LayoutManager createLayoutManager(Context context) { return new GridLayoutManager(context, 3); } @Override protected RecyclerView.Adapter createAdapter() { return new RvBoxAdapter(this, TextUtils.buildSimpleStringList()) { @Override public void onBindViewHolder(ViewHolder holder, int position) { Trace.beginSection("bind item " + position); spinWaitMs(3); super.onBindViewHolder(holder, position); Trace.endSection(); } }; } }
tests/UiBench/src/com/android/test/uibench/recyclerview/RvBoxAdapter.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.test.uibench.recyclerview; import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.util.TypedValue; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RvBoxAdapter extends RecyclerView.Adapter<RvBoxAdapter.ViewHolder> { private int mBackground; private List<String> mValues; public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } @Override public String toString() { return super.toString() + " '" + mTextView.getText(); } } public RvBoxAdapter(Context context, String[] strings) { TypedValue val = new TypedValue(); if (context.getTheme() != null) { context.getTheme().resolveAttribute( android.R.attr.selectableItemBackground, val, true); } mBackground = val.resourceId; mValues = new ArrayList<>(); Collections.addAll(mValues, strings); } @Override public RvBoxAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final ViewHolder h = new ViewHolder(new TextView(parent.getContext())); h.mTextView.setMinimumHeight(128); h.mTextView.setPadding(20, 0, 20, 0); h.mTextView.setFocusable(true); h.mTextView.setBackgroundResource(mBackground); RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.leftMargin = 10; lp.rightMargin = 5; lp.topMargin = 20; lp.bottomMargin = 15; h.mTextView.setLayoutParams(lp); return h; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mTextView.setText(position + ":" + mValues.get(position)); holder.mTextView.setMinHeight((200 + mValues.get(position).length() * 10)); holder.mTextView.setBackgroundColor(getBackgroundColor(position)); } private int getBackgroundColor(int position) { switch (position % 4) { case 0: return Color.LTGRAY; case 1: return Color.RED; case 2: return Color.DKGRAY; case 3: return Color.BLUE; } return Color.TRANSPARENT; } @Override public int getItemCount() { return mValues.size(); } }
tests/UiBench/src/com/android/test/uibench/recyclerview/RvCompatListActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import com.android.test.uibench.R; Loading