Ciao a tutti e buon anno!
Premessa: uso le Adaptive Icons (https://www.b4x.com/android/forum/threads/adaptive-icons.95244/).
Siccome non ho voglia di riempire il FileManager di immagini e doppioni, ho pensato di ricavarmi l'immagine dell'app dall'icona:
Questo codice funziona e produce una BitmapDrawable - infatti il comando "pm.GetApplicationIcon" restituisce un "android.graphics.drawable.Drawable".
Fin qui tutti contenti.
Ma io voglio inserirla nel titolo della B4XPage ed eventualmente in una B4XImageView. Qui mi inceppo.
Per inserire un'immagine nel titolo, questo codice (https://www.b4x.com/android/forum/threads/activity-title-icon.80235/post-508179) funziona ma richiede un'immagine nel FileManager, mentre io vorrei prenderlo dall'icona dell'app.
Questo codice funziona benissimo se non uso le Adaptive Icons, mentre con le Adaptive Icons va in crash:
Qualcuno ha una vaga idea di qual è l'inghippo?
Premessa: uso le Adaptive Icons (https://www.b4x.com/android/forum/threads/adaptive-icons.95244/).
Siccome non ho voglia di riempire il FileManager di immagini e doppioni, ho pensato di ricavarmi l'immagine dell'app dall'icona:
B4X:
Dim pm As PackageManager
Dim myIcon As BitmapDrawable = pm.GetApplicationIcon(Application.PackageName)
ImageView1.Background = myIcon
Fin qui tutti contenti.
Ma io voglio inserirla nel titolo della B4XPage ed eventualmente in una B4XImageView. Qui mi inceppo.
Per inserire un'immagine nel titolo, questo codice (https://www.b4x.com/android/forum/threads/activity-title-icon.80235/post-508179) funziona ma richiede un'immagine nel FileManager, mentre io vorrei prenderlo dall'icona dell'app.
B4X:
Dim pm As PackageManager
Dim myIcon As BitmapDrawable = pm.GetApplicationIcon(Application.PackageName)
Dim myBmp As Bitmap
myBmp.Initialize3(myIcon.Bitmap)
Dim cs As CSBuilder
cs.Initialize
cs.Append($""$).Image(myBmp, 40dip, 40dip, False).Append($" MyApp"$)
cs.PopAll
B4XPages.SetTitle(Me, cs)
B4X:
** Service (starter) Start **
** Activity (main) Create (first time) **
Error occurred on line: 34 (B4XMainPage)
java.lang.ClassCastException: android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
at anywheresoftware.b4a.objects.drawable.BitmapDrawable.getBitmap(BitmapDrawable.java:39)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
at anywheresoftware.b4a.debug.Debug.delegate(Debug.java:262)
at b4a.example.b4xmainpage._b4xpage_created(b4xmainpage.java:108)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:318)
at anywheresoftware.b4a.debug.Debug.CallSubNew2(Debug.java:285)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.keywords.Common.CallSubDebug2(Common.java:1140)
at b4a.example.b4xpagesmanager._createpageifneeded(b4xpagesmanager.java:1072)
at b4a.example.b4xpagesmanager._showpage(b4xpagesmanager.java:429)
at b4a.example.b4xpagesmanager._addpage(b4xpagesmanager.java:249)
at b4a.example.b4xpagesmanager._addpageandcreate(b4xpagesmanager.java:263)
at b4a.example.b4xpagesmanager._initialize(b4xpagesmanager.java:169)
at b4a.example.main._activity_create(main.java:421)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
at b4a.example.main.afterFirstLayout(main.java:105)
at b4a.example.main.access$000(main.java:17)
at b4a.example.main$WaitForLayout.run(main.java:83)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:248)
at android.os.Looper.loop(Looper.java:338)
at android.app.ActivityThread.main(ActivityThread.java:9067)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
Qualcuno ha una vaga idea di qual è l'inghippo?