Skip to content

Commit 3f19789

Browse files
author
Geoff Mendal
committed
Don't double count the left/top when using bitmap cache in VectorDrawable.
bug:16861184 Change-Id: I0530602957a434b222725b6fcbc1af165ee05835 Merge commit 'refs/changes/18/520718/4' of persistent-https://googleplex-android.git.corp.google.com/platform/frameworks/base into lmp-dev
2 parents 61da0fd + 6661341 commit 3f19789

5 files changed

Lines changed: 72 additions & 3 deletions

File tree

graphics/java/android/graphics/drawable/VectorDrawable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,8 @@ public void draw(Canvas canvas) {
268268

269269
mVectorState.updateCacheStates();
270270
}
271-
canvas.drawBitmap(bitmap, null, bounds, null);
271+
// The bitmap's size is the same as the bounds.
272+
canvas.drawBitmap(bitmap, 0, 0, null);
272273
}
273274

274275
canvas.restoreToCount(saveCount);

tests/VectorDrawableTest/AndroidManifest.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,15 @@
131131
<intent-filter>
132132
<action android:name="android.intent.action.MAIN" />
133133

134+
<category android:name="com.android.test.dynamic.TEST" />
135+
</intent-filter>
136+
</activity>
137+
<activity
138+
android:name="BoundsCheckTest"
139+
android:label="SetBound check" >
140+
<intent-filter>
141+
<action android:name="android.intent.action.MAIN" />
142+
134143
<category android:name="com.android.test.dynamic.TEST" />
135144
</intent-filter>
136145
</activity>

tests/VectorDrawableTest/res/drawable/vector_drawable04.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
android:width="64dp"
1717
android:height="64dp"
1818
android:viewportWidth="7.30625"
19-
android:viewportHeight="12.25">
19+
android:viewportHeight="12.25"
20+
android:autoMirrored="true">
2021

2122
<group>
2223
<clip-path

tests/VectorDrawableTest/res/drawable/vector_drawable28.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
android:height="64dp"
1818
android:viewportHeight="200"
1919
android:viewportWidth="200"
20-
android:width="64dp" >
20+
android:width="64dp"
21+
android:autoMirrored="true" >
2122

2223
<group>
2324
<path
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright (C) 2014 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.android.test.dynamic;
18+
19+
import android.app.Activity;
20+
import android.content.Context;
21+
import android.content.res.Resources;
22+
import android.graphics.Canvas;
23+
import android.graphics.drawable.BitmapDrawable;
24+
import android.graphics.drawable.VectorDrawable;
25+
import android.os.Bundle;
26+
import android.view.View;
27+
28+
public class BoundsCheckTest extends Activity {
29+
@Override
30+
protected void onCreate(Bundle savedInstanceState) {
31+
super.onCreate(savedInstanceState);
32+
final BitmapsView view = new BitmapsView(this);
33+
setContentView(view);
34+
}
35+
36+
static class BitmapsView extends View {
37+
private final BitmapDrawable mBitmap1;
38+
private final VectorDrawable mVector1;
39+
40+
BitmapsView(Context c) {
41+
super(c);
42+
Resources res = c.getResources();
43+
mBitmap1 = (BitmapDrawable) res.getDrawable(R.drawable.icon);
44+
mVector1 = (VectorDrawable) res.getDrawable(R.drawable.vector_drawable28);
45+
}
46+
47+
@Override
48+
protected void onDraw(Canvas canvas) {
49+
super.onDraw(canvas);
50+
mBitmap1.setBounds(100, 100, 400, 400);
51+
mBitmap1.draw(canvas);
52+
53+
mVector1.setBounds(100, 100, 400, 400);
54+
mVector1.draw(canvas);
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)