Skip to content
This repository has been archived by the owner on Jan 23, 2024. It is now read-only.

Fix and reformat drawables, v2 #490

Closed
wants to merge 12 commits into from
Closed

Fix and reformat drawables, v2 #490

wants to merge 12 commits into from

Conversation

MelvynEzi
Copy link
Contributor

This PR supersedes #433

PR consists of:

  1. Reduction of APK size by using vector drawables instead of PNG drawables
    • Support for vector drawable with VectorDrawableCompat for <21 API
    • Following drawables were converted to vector drawables:
  2. Removed unused notification icons (API <11)
  3. Renamed seekbar background drawables to a more comprehensive name

@MelvynEzi
Copy link
Contributor Author

@Blaisorblade @Eremiell @sarav @nahojjjen test IV button please~

@Blaisorblade
Copy link
Collaborator

The button looks right on Nexus 5X and Nexus 7.

@@ -1177,7 +1177,7 @@ private void adjustSeekbarsThumbs() {
// Set Thumb 1 drawable to an orange marker and value at the max possible Pokemon level at the current
// trainer level
expandedLevelSeekbarBackground.getThumb(0).setThumb(getDrawableC(R.drawable
.orange_seekbar_thumb_marker));
.orange_marker));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code is inside a Service, not an AppCompatActivity, so IIUC what @thearaks explained, it's going to fail (right)? Or does that issue not apply to getDrawable?

@Blaisorblade
Copy link
Collaborator

Review by @thearaks. But isn't this going to suffer from the usual issues on Android 4.4? Or are these drawables only used inside AppCompatActivity?

@MelvynEzi
Copy link
Contributor Author

That's something I requested for testing by anyone with a KitKat device since v1 of the PR. I do have a work around if this implementation fails.

@Blaisorblade
Copy link
Collaborator

Yeah you're right, but my only 4.4 device kind-of never works.
What's your workaround, out of curiosity? What I do know is that this will be fixed once we split the GUI from Pokefly into an Activity, but that might still take a while.

@MelvynEzi
Copy link
Contributor Author

Current workaround would be to rasterize the drawable into a bitmap, but only for KitKat.

@Blaisorblade
Copy link
Collaborator

Tested on 4.4. We know that GoIV doesn't work well there, but this time it crashes as soon as I pressed Start (precisely, when starting Pokefly), which is much earlier. OTOH that's "good" since PoGo doesn't really run on this device (this Galaxy Nexus has ~700MB RAM).

Current workaround would be to rasterize the drawable into a bitmap, but only for KitKat.

That seems... tricky to do, unless you have yourself a device to test this with. Maybe this should just wait for the big refactoring? Meanwhile, how hard would it be to use these button sizes (and fix #402) without the rest? If that's too much work maybe this should wait.

Stack trace from logcat follows:

09-29 12:46:33.536 20275-20275/com.kamron.pogoiv E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: com.kamron.pogoiv, PID: 20275
                                                                   java.lang.RuntimeException: Unable to start service com.kamron.pogoiv.Pokefly@41e1ace0 with Intent { cmp=com.kamron.pogoiv/.Pokefly (has extras) }: android.view.InflateException: Binary XML file line #27: Error inflating class android.widget.Button
                                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2736)
                                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:144)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                       at android.os.Looper.loop(Looper.java:136)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5139)
                                                                       at java.lang.reflect.Method.invokeNative(Native Method)
                                                                       at java.lang.reflect.Method.invoke(Method.java:515)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
                                                                       at dalvik.system.NativeStart.main(Native Method)
                                                                    Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class android.widget.Button
                                                                       at android.view.LayoutInflater.createView(LayoutInflater.java:620)
                                                                       at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
                                                                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                                       at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:714)
                                                                       at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:397)
                                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719)
                                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:136) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                       at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                       at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                       at dalvik.system.NativeStart.main(Native Method) 
                                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                                       at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
                                                                       at android.view.LayoutInflater.createView(LayoutInflater.java:594)
                                                                       at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                                                                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                       at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:714) 
                                                                       at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:397) 
                                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:136) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                       at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                       at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                       at dalvik.system.NativeStart.main(Native Method) 
                                                                    Caused by: android.content.res.Resources$NotFoundException: File res/drawable/poke_picker_toggle.xml from drawable resource ID #0x7f020064
                                                                       at android.content.res.Resources.loadDrawable(Resources.java:2194)
                                                                       at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
                                                                       at android.view.View.<init>(View.java:3561)
                                                                       at android.widget.TextView.<init>(TextView.java:623)
                                                                       at android.widget.Button.<init>(Button.java:107)
                                                                       at android.widget.Button.<init>(Button.java:103)
                                                                       at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                                       at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                                                       at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
                                                                       at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                                                                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                       at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:714) 
                                                                       at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:397) 
                                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:136) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                       at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                       at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                       at dalvik.system.NativeStart.main(Native Method) 
                                                                    Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
                                                                       at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
                                                                       at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
                                                                       at android.content.res.Resources.loadDrawable(Resources.java:2190)
                                                                       at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                                                                       at android.view.View.<init>(View.java:3561) 
                                                                       at android.widget.TextView.<init>(TextView.java:623) 
                                                                       at android.widget.Button.<init>(Button.java:107) 
                                                                       at android.widget.Button.<init>(Button.java:103) 
                                                                       at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                                       at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                                                       at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
                                                                       at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                                                                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                       at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:714) 
                                                                       at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:397) 
                                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:136) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                       at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                       at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                       at dalvik.system.NativeStart.main(Native Method) 

@MelvynEzi
Copy link
Contributor Author

Sweet. That was exactly what I'm expecting to happen. Rasterizing to bitmap is just a 5 lines thing. No biggies.

@MelvynEzi
Copy link
Contributor Author

@Blaisorblade for your testing on 4.4! I found the actual reason but I also fixed a potential crash.

android:visibility="gone">

</AutoCompleteTextView>

<Button
android:paddingLeft="4dp"
<android.support.v7.widget.AppCompatImageButton
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait, that's what they want us to use? I didn't know XML allowed that...

@Blaisorblade
Copy link
Collaborator

No crash but more exceptions. Then I got a crash when stopping.

09-29 23:29:55.152 4440-4440/com.kamron.pogoiv W/ImageView: Unable to find resource: 2130837587
                                                            android.content.res.Resources$NotFoundException: File res/drawable/blue_arrow.xml from drawable resource ID #0x7f020053
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2194)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730)
                                                                at android.content.res.Resources.getDrawable(Resources.java:710)
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636)
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366)
                                                                at com.kamron.pogoiv.Pokefly.createInputLayout(Pokefly.java:740)
                                                                at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:715)
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:394)
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719)
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144)
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:136)
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139)
                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                at java.lang.reflect.Method.invoke(Method.java:515)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
                                                                at dalvik.system.NativeStart.main(Native Method)
                                                             Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
                                                                at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
                                                                at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2190)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730) 
                                                                at android.content.res.Resources.getDrawable(Resources.java:710) 
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636) 
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366) 
                                                                at com.kamron.pogoiv.Pokefly.createInputLayout(Pokefly.java:740) 
                                                                at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:715) 
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:394) 
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:136) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                at dalvik.system.NativeStart.main(Native Method) 
09-29 23:29:55.167 4440-4440/com.kamron.pogoiv W/ImageView: Unable to find resource: 2130837587
                                                            android.content.res.Resources$NotFoundException: File res/drawable/blue_arrow.xml from drawable resource ID #0x7f020053
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2194)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730)
                                                                at android.content.res.Resources.getDrawable(Resources.java:710)
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636)
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366)
                                                                at com.kamron.pogoiv.Pokefly.createResultLayout(Pokefly.java:753)
                                                                at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:716)
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:394)
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719)
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144)
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:136)
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139)
                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                at java.lang.reflect.Method.invoke(Method.java:515)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
                                                                at dalvik.system.NativeStart.main(Native Method)
                                                             Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
                                                                at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
                                                                at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2190)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730) 
                                                                at android.content.res.Resources.getDrawable(Resources.java:710) 
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636) 
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366) 
                                                                at com.kamron.pogoiv.Pokefly.createResultLayout(Pokefly.java:753) 
                                                                at com.kamron.pogoiv.Pokefly.createInfoLayout(Pokefly.java:716) 
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:394) 
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:136) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                at dalvik.system.NativeStart.main(Native Method) 
09-29 23:29:55.175 4440-4440/com.kamron.pogoiv W/ImageView: Unable to find resource: 2130837590
                                                            android.content.res.Resources$NotFoundException: File res/drawable/dot.xml from drawable resource ID #0x7f020056
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2194)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730)
                                                                at android.content.res.Resources.getDrawable(Resources.java:710)
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636)
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366)
                                                                at com.kamron.pogoiv.Pokefly.createArcPointer(Pokefly.java:611)
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:396)
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719)
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144)
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:136)
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139)
                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                at java.lang.reflect.Method.invoke(Method.java:515)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
                                                                at dalvik.system.NativeStart.main(Native Method)
                                                             Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
                                                                at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
                                                                at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
                                                                at android.content.res.Resources.loadDrawable(Resources.java:2190)
                                                                at android.content.res.Resources.getDrawable(Resources.java:730) 
                                                                at android.content.res.Resources.getDrawable(Resources.java:710) 
                                                                at android.widget.ImageView.resolveUri(ImageView.java:636) 
                                                                at android.widget.ImageView.setImageResource(ImageView.java:366) 
                                                                at com.kamron.pogoiv.Pokefly.createArcPointer(Pokefly.java:611) 
                                                                at com.kamron.pogoiv.Pokefly.onStartCommand(Pokefly.java:396) 
                                                                at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2719) 
                                                                at android.app.ActivityThread.access$2100(ActivityThread.java:144) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:136) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                at dalvik.system.NativeStart.main(Native Method) 

Here's the crash on stop, it seems #477:

09-29 23:31:45.558 6002-6002/com.kamron.pogoiv E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.kamron.pogoiv, PID: 6002
                                                                 java.lang.RuntimeException: Unable to stop service com.kamron.pogoiv.Pokefly@42078f38: java.lang.IllegalArgumentException: view must not be null
                                                                     at android.app.ActivityThread.handleStopService(ActivityThread.java:2766)
                                                                     at android.app.ActivityThread.access$2200(ActivityThread.java:144)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:136)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5139)
                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
                                                                     at dalvik.system.NativeStart.main(Native Method)
                                                                  Caused by: java.lang.IllegalArgumentException: view must not be null
                                                                     at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:295)
                                                                     at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79)
                                                                     at com.kamron.pogoiv.Pokefly.unwatchScreen(Pokefly.java:464)
                                                                     at com.kamron.pogoiv.Pokefly.onDestroy(Pokefly.java:513)
                                                                     at android.app.ActivityThread.handleStopService(ActivityThread.java:2749)
                                                                     at android.app.ActivityThread.access$2200(ActivityThread.java:144) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:136) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5139) 
                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
                                                                     at dalvik.system.NativeStart.main(Native Method) 

@MelvynEzi
Copy link
Contributor Author

Got it. I'll be back with more fixes! Thanks a lot for the testing.

@sarav
Copy link
Contributor

sarav commented Sep 30, 2016

@DJCrapsody How much space is this saving? This looks like a lot of work. Hopefully, it's worth the time.

@MelvynEzi
Copy link
Contributor Author

MelvynEzi commented Sep 30, 2016

Most svg can be generated through android studio itself so most of the time went to fixing the IV button

@Blaisorblade
Copy link
Collaborator

Just noticed this PR drops the initialization of pointerWidth and pointerHeight, which is used in tricky code. Whatever's the reason, that's the sort of thing that warrants explicit mention so we have a chance to test it.

@MelvynEzi
Copy link
Contributor Author

@Blaisorblade time for more 4.4 testing

@Blaisorblade
Copy link
Collaborator

Regarding the button size, I've discovered something. You remember it worked on my phone? Today I changed the pixel size (or something like that)*, and GoIV's button shrank while PoGo didn't. I think they simply aren't using Android's pixel density, so maybe we should ignore it as well somehow.

  • I set "Display size" to Small, which in fact makes the screen content small (so the name makes no sense), as described by this Nougat review. This is said to affect a setting named thero.sf.lcd_density.

@MelvynEzi
Copy link
Contributor Author

Strange, doesn't sound right tho... Unless changing it changes the exact pixel counts. Could you take a screenshot for each level of non-default display size?

@Blaisorblade
Copy link
Collaborator

Unless changing it changes the exact pixel counts.

I'm assuming it does shrink display pixels, and the text size control should shrink screen pixels. Here's a screenshot with master and the "Small" Display Size setting I mentioned:

2016-10-02 19 46 15

Here it is with Normal size:
image

Here it is with Large size:
image

Here it is with Larger size:
image

For extra fun, here's GoIV:
image

Here it is with Largest size:
image

@Blaisorblade
Copy link
Collaborator

Oh, the bugs on 4.4 seem fixed! Tested on 4.4, the previous crashes don't happen. I'm unable to launch PoGo, so the button is not tested. Sharing a screenshot with GoIV crashed per #463. A screenshot of a screenshot worked, apart for a crash with #475. So there's a chance there's no other bug.

Use app:srcCompat instead of android:src for vector drawables
Generalize method with getVectorDrawable() for vector drawables
Readd initialization of pointerHeight and pointerWidth that was unintentionally removed
Magic numbers are calculated based on devices with standard PPI to get the estimated size/x/y of the IV button (not always accurate)
getVectorDrawables is used when retrieving vector drawables
@MelvynEzi
Copy link
Contributor Author

MelvynEzi commented Oct 5, 2016

@Blaisorblade javadoc added and magic numbers are now constant

@Blaisorblade
Copy link
Collaborator

Does this become more mergeable after #506?

@NightMadness
Copy link
Contributor

I noticed black screens (when pokego is already running) while testing this. I will check again when i get home.

@Blaisorblade
Copy link
Collaborator

I noticed black screens (when pokego is already running) while testing this. I will check again when i get home.

That sounds like the known black-screen issue — if PoGo is running, you start GoIV and switch to PoGo, sometimes PoGo goes black and you have to restart it.

@nahojjjen
Copy link
Collaborator

I'm closing this PR due to inactivity for cleanup.

@nahojjjen nahojjjen closed this Sep 11, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IV button is not sized correctly
5 participants