fix some Drawable related crashes in NewPipe

This commit is contained in:
Julian Winkler
2023-12-30 17:09:55 +01:00
parent 176405ed45
commit 493cb8284a
5 changed files with 21 additions and 9 deletions

View File

@@ -923,6 +923,8 @@ public final class AssetManager {
int[] inAttrs, int[] outValues, int[] outIndices) { int[] inAttrs, int[] outValues, int[] outIndices) {
if (defStyleRes == 0 && theme.containsKey(defStyleAttr)) if (defStyleRes == 0 && theme.containsKey(defStyleAttr))
defStyleRes = theme.get(defStyleAttr).getData(); defStyleRes = theme.get(defStyleAttr).getData();
if (defStyleRes == 0 && set != null)
defStyleRes = set.getAttributeResourceValue(null, "style", 0);
Map<Integer,ValueItem> defStyle = loadStyle(defStyleRes); Map<Integer,ValueItem> defStyle = loadStyle(defStyleRes);
ResXmlPullParser parser = (ResXmlPullParser)set; ResXmlPullParser parser = (ResXmlPullParser)set;

View File

@@ -2050,8 +2050,9 @@ public class Resources {
if (dr == null) { if (dr == null) {
if (value.string == null) { if (value.string == null) {
throw new NotFoundException( Log.w(TAG,
"Resource is not a Drawable (color or path): " + value); "Resource is not a Drawable (color or path): " + value);
return null;
} }
String file = value.string.toString(); String file = value.string.toString();

View File

@@ -1,16 +1,15 @@
package android.graphics.drawable; package android.graphics.drawable;
import android.graphics.Canvas;
public class ColorDrawable extends Drawable { public class ColorDrawable extends Drawable {
private int color;
public ColorDrawable(int color) { public ColorDrawable(int color) {
this.color = color;
} }
@Override public int getColor() {
public void draw(Canvas canvas) { return color;
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'draw'");
} }
} }

View File

@@ -121,6 +121,8 @@ public class Drawable {
StateListDrawable drawable = new StateListDrawable(); StateListDrawable drawable = new StateListDrawable();
drawable.inflate(resources, parser, parser, null); drawable.inflate(resources, parser, parser, null);
return drawable; return drawable;
} else if ("shape".equals(parser.getName())) {
return new GradientDrawable();
} }
return null; return null;
} }
@@ -146,5 +148,11 @@ public class Drawable {
return false; return false;
} }
public void setAlpha(int alpha) {}
public boolean getPadding(Rect padding) {
return false;
}
protected static native long native_paintable_from_path(String path); protected static native long native_paintable_from_path(String path);
} }

View File

@@ -844,12 +844,14 @@ public class View extends Object {
int background = a.getResourceId(com.android.internal.R.styleable.View_background, 0); int background = a.getResourceId(com.android.internal.R.styleable.View_background, 0);
if(background != 0) { if(background != 0) {
if(context.getResources().getResourceTypeName(background).equals("color")) {// drawables not currently supported if(context.getResources().getResourceTypeName(background).equals("color")) {
System.out.printf("__background__: >%x<\n", context.getResources().getColor(background)); System.out.printf("__background__: >%x<\n", context.getResources().getColor(background));
final android.util.TypedValue typedValue = new android.util.TypedValue(); final android.util.TypedValue typedValue = new android.util.TypedValue();
setBackgroundColor(context.getResources().getColor(background)); setBackgroundColor(context.getResources().getColor(background));
} else {
setBackgroundResource(background);
} }
} }
} }
@@ -1014,7 +1016,7 @@ public class View extends Object {
this.visibility = visibility; this.visibility = visibility;
} }
public void setPadding(int left, int top, int right, int bottom) {} public void setPadding(int left, int top, int right, int bottom) {}
public void setBackgroundResource(int resid) throws Exception { public void setBackgroundResource(int resid) {
setBackgroundDrawable(getResources().getDrawable(resid)); setBackgroundDrawable(getResources().getDrawable(resid));
} }