Merge "Fix rect shadow detection" into nyc-dev
This commit is contained in:
@@ -44,6 +44,11 @@ public class RectShadowPainter {
|
||||
private static final float PERPENDICULAR_ANGLE = 90f;
|
||||
|
||||
public static void paintShadow(Outline viewOutline, float elevation, Canvas canvas) {
|
||||
Rect outline = new Rect();
|
||||
if (!viewOutline.getRect(outline)) {
|
||||
throw new IllegalArgumentException("Outline is not a rect shadow");
|
||||
}
|
||||
|
||||
float shadowSize = elevationToShadow(elevation);
|
||||
int saved = modifyCanvas(canvas, shadowSize);
|
||||
if (saved == -1) {
|
||||
@@ -54,8 +59,7 @@ public class RectShadowPainter {
|
||||
cornerPaint.setStyle(Style.FILL);
|
||||
Paint edgePaint = new Paint(cornerPaint);
|
||||
edgePaint.setAntiAlias(false);
|
||||
Rect outline = viewOutline.mRect;
|
||||
float radius = viewOutline.mRadius;
|
||||
float radius = viewOutline.getRadius();
|
||||
float outerArcRadius = radius + shadowSize;
|
||||
int[] colors = {START_COLOR, START_COLOR, END_COLOR};
|
||||
cornerPaint.setShader(new RadialGradient(0, 0, outerArcRadius, colors,
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ViewGroup_Delegate {
|
||||
private static void drawShadow(ViewGroup parent, Canvas canvas, View child,
|
||||
Outline outline) {
|
||||
float elevation = getElevation(child, parent);
|
||||
if(outline.mRect != null) {
|
||||
if(outline.mMode == Outline.MODE_ROUND_RECT && outline.mRect != null) {
|
||||
RectShadowPainter.paintShadow(outline, elevation, canvas);
|
||||
return;
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.1 KiB |
@@ -197,6 +197,14 @@
|
||||
android:inputType="numberPassword"
|
||||
android:text="numeric password" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/toggleButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@id/editText4"
|
||||
android:layout_toEndOf="@id/editText4"
|
||||
android:text="New ToggleButton" />
|
||||
|
||||
<EditText
|
||||
android:id="@id/editText5"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -31,8 +31,8 @@ import com.android.io.FolderWrapper;
|
||||
import com.android.layoutlib.bridge.Bridge;
|
||||
import com.android.layoutlib.bridge.android.BridgeContext;
|
||||
import com.android.layoutlib.bridge.android.RenderParamsFlags;
|
||||
import com.android.layoutlib.bridge.impl.RenderAction;
|
||||
import com.android.layoutlib.bridge.impl.DelegateManager;
|
||||
import com.android.layoutlib.bridge.impl.RenderAction;
|
||||
import com.android.layoutlib.bridge.intensive.setup.ConfigGenerator;
|
||||
import com.android.layoutlib.bridge.intensive.setup.LayoutLibTestCallback;
|
||||
import com.android.layoutlib.bridge.intensive.setup.LayoutPullParser;
|
||||
@@ -42,8 +42,12 @@ import com.android.resources.ResourceType;
|
||||
import com.android.utils.ILogger;
|
||||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestWatcher;
|
||||
import org.junit.runner.Description;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
@@ -56,9 +60,12 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.google.android.collect.Lists;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@@ -105,6 +112,21 @@ public class Main {
|
||||
private static ILogger sLogger;
|
||||
private static Bridge sBridge;
|
||||
|
||||
/** List of log messages generated by a render call. It can be used to find specific errors */
|
||||
private static ArrayList<String> sRenderMessages = Lists.newArrayList();
|
||||
|
||||
@Rule
|
||||
public static TestWatcher sRenderMessageWatcher = new TestWatcher() {
|
||||
@Override
|
||||
protected void succeeded(Description description) {
|
||||
// We only check error messages if the rest of the test case was successful.
|
||||
if (!sRenderMessages.isEmpty()) {
|
||||
fail(description.getMethodName() + " render error message: " + sRenderMessages.get
|
||||
(0));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static {
|
||||
// Test that System Properties are properly set.
|
||||
PLATFORM_DIR = getPlatformDir();
|
||||
@@ -279,6 +301,11 @@ public class Main {
|
||||
ConfigGenerator.getEnumMap(attrs), getLayoutLog());
|
||||
}
|
||||
|
||||
@Before
|
||||
public void beforeTestCase() {
|
||||
sRenderMessages.clear();
|
||||
}
|
||||
|
||||
/** Test activity.xml */
|
||||
@Test
|
||||
public void testActivity() throws ClassNotFoundException {
|
||||
@@ -289,6 +316,9 @@ public class Main {
|
||||
@Test
|
||||
public void testAllWidgets() throws ClassNotFoundException {
|
||||
renderAndVerify("allwidgets.xml", "allwidgets.png");
|
||||
|
||||
// We expect fidelity warnings for Path.isConvex. Fail for anything else.
|
||||
sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported."));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -299,6 +329,9 @@ public class Main {
|
||||
@Test
|
||||
public void testAllWidgetsTablet() throws ClassNotFoundException {
|
||||
renderAndVerify("allwidgets.xml", "allwidgets_tab.png", ConfigGenerator.NEXUS_7_2012);
|
||||
|
||||
// We expect fidelity warnings for Path.isConvex. Fail for anything else.
|
||||
sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported."));
|
||||
}
|
||||
|
||||
private static void gc() {
|
||||
@@ -649,6 +682,6 @@ public class Main {
|
||||
}
|
||||
|
||||
private static void failWithMsg(@NonNull String msgFormat, Object... args) {
|
||||
fail(args == null ? "" : String.format(msgFormat, args));
|
||||
sRenderMessages.add(args == null ? msgFormat : String.format(msgFormat, args));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user