diff options
Diffstat (limited to 'src/android/jar')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java index cc7fc505ee..4bd78bfe6a 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java +++ b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java @@ -90,6 +90,9 @@ public class ExtractStyle { native static int[] extractChunkInfo(byte[] chunkData); native static int[] extractNativeChunkInfo(int nativeChunk); + native static int[] extractChunkInfo20(byte[] chunkData); + native static int[] extractNativeChunkInfo20(long nativeChunk); + Class<?> styleableClass = getStylableClass(); final int[] EMPTY_STATE_SET = {}; @@ -337,7 +340,10 @@ public class ExtractStyle { } public void drawPatch(Bitmap bmp, byte[] chunks, RectF dst, Paint paint) { - chunkData = extractChunkInfo(chunks); + if (Build.VERSION.SDK_INT > 19) + chunkData = extractChunkInfo20(chunks); + else + chunkData = extractChunkInfo(chunks); } } @@ -630,6 +636,8 @@ public class ExtractStyle { JSONObject stateJson = new JSONObject(); final Drawable d = (Drawable) StateListDrawable.class.getMethod("getStateDrawable", Integer.TYPE).invoke(stateList, i); final int [] states = (int[]) StateListDrawable.class.getMethod("getStateSet", Integer.TYPE).invoke(stateList, i); + if (states == null) + continue; stateJson.put("states", getStatesList(states)); stateJson.put("drawable", getDrawable(d, filename+"__"+getStatesName(states))); array.put(stateJson); @@ -658,9 +666,7 @@ public class ExtractStyle { int [] intArray=(int[]) gradientStateClass.getField("mColors").get(obj); json.put("colors",getJsonArray(intArray, 0, intArray.length)); json.put("positions",getJsonArray((float[]) gradientStateClass.getField("mPositions").get(obj))); - json.put("solidColor",gradientStateClass.getField("mSolidColor").getInt(obj)); json.put("strokeWidth",gradientStateClass.getField("mStrokeWidth").getInt(obj)); - json.put("strokeColor",gradientStateClass.getField("mStrokeColor").getInt(obj)); json.put("strokeDashWidth",gradientStateClass.getField("mStrokeDashWidth").getFloat(obj)); json.put("strokeDashGap",gradientStateClass.getField("mStrokeDashGap").getFloat(obj)); json.put("radius",gradientStateClass.getField("mRadius").getFloat(obj)); @@ -676,6 +682,10 @@ public class ExtractStyle { json.put("thicknessRatio",gradientStateClass.getField("mThicknessRatio").getFloat(obj)); json.put("innerRadius",gradientStateClass.getField("mInnerRadius").getInt(obj)); json.put("thickness",gradientStateClass.getField("mThickness").getInt(obj)); + if (Build.VERSION.SDK_INT < 20) { + json.put("solidColor",gradientStateClass.getField("mSolidColor").getInt(obj)); + json.put("strokeColor",gradientStateClass.getField("mStrokeColor").getInt(obj)); + } } catch (Exception e) { e.printStackTrace(); } @@ -789,6 +799,8 @@ public class ExtractStyle { { Field mNativeChunk = np.getClass().getDeclaredField("mNativeChunk"); mNativeChunk.setAccessible(true); + if (Build.VERSION.SDK_INT > 19) + return getJsonChunkInfo(extractNativeChunkInfo20(mNativeChunk.getLong(np))); return getJsonChunkInfo(extractNativeChunkInfo(mNativeChunk.getInt(np))); } } |