Merge "Fix compilation errors after PagedRecyclerView migration to Gerrit" into pi-car-dev
diff --git a/car-chassis-lib/build.gradle b/car-chassis-lib/build.gradle
index 21b2b0d..6641025 100644
--- a/car-chassis-lib/build.gradle
+++ b/car-chassis-lib/build.gradle
@@ -65,8 +65,11 @@
}
}
+def outProduct = System.getenv("ANDROID_PRODUCT_OUT")
+
dependencies {
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
+ implementation files(outProduct + '/obj/JAVA_LIBRARIES/android.car-stubs_intermediates/javalib.jar')
}
diff --git a/car-chassis-lib/res/values/config.xml b/car-chassis-lib/res/values/config.xml
index 8a0875f..1ecdf6a 100644
--- a/car-chassis-lib/res/values/config.xml
+++ b/car-chassis-lib/res/values/config.xml
@@ -18,11 +18,10 @@
<!--
Configuration for a default scrollbar for the PagedRecyclerView. This component must inherit
abstract class ScrollBar. If the ScrollBar is enabled, the component will be initialized from
- PagedRecyclerView#createScrollBarFromConfig().
+ PagedRecyclerView#createScrollBarFromConfig(). If no component is provided,
+ {@link DefaultScrollbar} class will be used.
-->
- <string name="chassis_scrollbar_component" translatable="false">
- com.google.android.apps.automotive.chassis.libraries.CarScrollBar
- </string>
+ <string name="chassis_scrollbar_component" translatable="false"/>
<!--
Whether to include a gutter to the start, end or both sides of the list view items.
@@ -33,16 +32,16 @@
end = 2
both = 3
-->
- <integer name="chassis_scrollbar_gutter" translatable="false">1</integer>
+ <integer name="chassis_scrollbar_gutter">1</integer>
<!--
Position of the scrollbar. Default to left. Values are defined as follows:
start = 0
end = 1
-->
- <integer name="chassis_scrollbar_position" translatable="false">0</integer>
+ <integer name="chassis_scrollbar_position">0</integer>
<!-- Width of the scrollbar container. -->
- <dimen name="chassis_scrollbar_container_width" translatable="false">@*android:dimen/car_margin</dimen>
+ <dimen name="chassis_scrollbar_container_width" translatable="false">@dimen/chassis_margin</dimen>
</resources>
\ No newline at end of file
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarUxRestrictionsUtil.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarUxRestrictionsUtil.java
index 7e204bd..a000696 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarUxRestrictionsUtil.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarUxRestrictionsUtil.java
@@ -66,7 +66,7 @@
}
};
- mCarApi = Car.createCar(context);
+ mCarApi = Car.createCar(context, null, null);
mObservers = Collections.newSetFromMap(new WeakHashMap<>());
try {
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarScrollBar.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/DefaultScrollBar.java
similarity index 98%
rename from car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarScrollBar.java
rename to car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/DefaultScrollBar.java
index 0ec40d4..758b61c 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/CarScrollBar.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/DefaultScrollBar.java
@@ -34,6 +34,7 @@
import com.android.car.chassis.R;
import com.android.car.chassis.pagedrecyclerview.PagedRecyclerView.ScrollBarPosition;
+import com.android.car.chassis.utils.ResourceUtils;
/**
* The default scroll bar widget for the {@link PagedRecyclerView}.
@@ -41,9 +42,9 @@
* <p>Inspired by {@link androidx.car.widget.PagedListView}. Most pagination and scrolling logic has
* been ported from the PLV with minor updates.
*/
-class CarScrollBar implements ScrollBar {
+class DefaultScrollBar implements ScrollBar {
private float mButtonDisabledAlpha;
- private static final String TAG = "CarScrollBar";
+ private static final String TAG = "DefaultScrollBar";
private PagedSnapHelper mSnapHelper;
private ImageView mUpButton;
@@ -86,7 +87,8 @@
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
Resources res = rv.getContext().getResources();
- mButtonDisabledAlpha = res.getFloat(R.dimen.chassis_button_disabled_alpha);
+
+ mButtonDisabledAlpha = ResourceUtils.getFloat(res, R.dimen.chassis_button_disabled_alpha);
if (scrollBarAboveRecyclerView) {
parent.addView(mScrollView);
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
index 7f76e16..677754e 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
@@ -690,7 +690,9 @@
Class<?> cls;
try {
- cls = getContext().getClassLoader().loadClass(mScrollBarClass);
+ cls = mScrollBarClass != null
+ ? getContext().getClassLoader().loadClass(mScrollBarClass)
+ : DefaultScrollBar.class;
} catch (Throwable t) {
throw andLog("Error loading scroll bar component: " + mScrollBarClass, t);
}
@@ -784,15 +786,17 @@
mNestedRecyclerViewState = new SparseArray<>();
}
+ @SuppressWarnings("unchecked")
private SavedState(Parcel in) {
super(in);
mNestedRecyclerViewState = in.readSparseArray(mContext.getClassLoader());
}
+ @SuppressWarnings("unchecked")
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
- out.writeSparseArray(mNestedRecyclerViewState);
+ out.writeSparseArray((SparseArray<Object>) (Object) mNestedRecyclerViewState);
}
public static final Parcelable.Creator<SavedState> CREATOR =
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedSmoothScroller.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedSmoothScroller.java
index 910e370..53a4d44 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedSmoothScroller.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedSmoothScroller.java
@@ -25,6 +25,7 @@
import androidx.recyclerview.widget.RecyclerView;
import com.android.car.chassis.R;
+import com.android.car.chassis.utils.ResourceUtils;
/**
* Code drop from {androidx.car.widget.PagedSmoothScroller}
@@ -48,17 +49,14 @@
}
private void init(Context context) {
- mMillisecondsPerInch =
- context.getResources().getFloat(R.dimen.chassis_scrollbar_milliseconds_per_inch);
- mDecelerationTimeDivisor =
- context.getResources().getFloat(
- R.dimen.chassis_scrollbar_deceleration_times_divisor);
+ mMillisecondsPerInch = ResourceUtils.getFloat(context.getResources(),
+ R.dimen.chassis_scrollbar_milliseconds_per_inch);
+ mDecelerationTimeDivisor = ResourceUtils.getFloat(context.getResources(),
+ R.dimen.chassis_scrollbar_deceleration_times_divisor);
mInterpolator =
new DecelerateInterpolator(
- context
- .getResources()
- .getFloat(
- R.dimen.chassis_scrollbar_decelerate_interpolator_factor));
+ ResourceUtils.getFloat(context.getResources(),
+ R.dimen.chassis_scrollbar_decelerate_interpolator_factor));
}
@Override
diff --git a/car-chassis-lib/src/com/android/car/chassis/utils/ResourceUtils.java b/car-chassis-lib/src/com/android/car/chassis/utils/ResourceUtils.java
new file mode 100644
index 0000000..1ed0ae3
--- /dev/null
+++ b/car-chassis-lib/src/com/android/car/chassis/utils/ResourceUtils.java
@@ -0,0 +1,42 @@
+/*
+ * 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.car.chassis.utils;
+
+import android.content.res.Resources;
+import android.util.TypedValue;
+
+import androidx.annotation.DimenRes;
+
+/**
+ * Collection of resource utility methods
+ */
+public final class ResourceUtils {
+ /** This is a utility class */
+ private ResourceUtils() {}
+
+ /**
+ * Reads a float value from a dimens resource. This is necessary as {@link Resources#getFloat}
+ * is not currently public.
+ *
+ * @param res {@link Resources} to read values from
+ * @param resId Id of the dimens resource to read
+ */
+ public static float getFloat(Resources res, @DimenRes int resId) {
+ TypedValue outValue = new TypedValue();
+ res.getValue(resId, outValue, true);
+ return outValue.getFloat();
+ }
+}
diff --git a/car-chassis-lib/tests/paintbooth/res/values/strings.xml b/car-chassis-lib/tests/paintbooth/res/values/strings.xml
index 9bfdb07..6896e36 100644
--- a/car-chassis-lib/tests/paintbooth/res/values/strings.xml
+++ b/car-chassis-lib/tests/paintbooth/res/values/strings.xml
@@ -16,5 +16,5 @@
-->
<resources>
<!-- Application name [CHAR LIMIT=30] -->
- <string name="app_name">Paint Booth (Gerrit)</string>
+ <string name="app_name" translatable="false">Paint Booth (Gerrit)</string>
</resources>