Madvertise: Madview auf Geräten mit 800er Auflösung nicht auf voller Breite.

  • Antworten:13
  • OffenNicht stickyNicht beantwortet

01.10.2011 12:28:48 via Website

Hi Leute,

vielleicht kann mir ja kurz einer helfen.
Ich habe ja Madvertise Werbung eingebunden und das funktioniert auch super bisher.
Lediglich eine Sache fällt mir auf:
Die Anzeige im MMA Format füllt nur in der kleinen Auflösung die Breite des Bildschirms aus.
In der 800er Auflösung ist die Anzeige schmaler als das Bild.
Ich fände es ja schön, wenn das auf allen Geräten gleich aussehen würde, so wie bei den meisten anderen Apps mit Werbung.

Wo kann der Fehler liegen?
So auf die Schnelle sieht beim Layout alles gut aus. Der MadView selbst und alle umliegenden Container haben width="fill_parent"

Any ideas? :)

04.10.2011 14:03:36 via Website

das aktuelle Madvertise-SDK liefert zwar eine View die das parent-Objekt vollständig ausfüllt, das darin platzierte Werbe-Bildchen wird aber nicht skalliert (und bleibt daher bei gewissen Bildschrimgrößen kleiner als der zur Verfügung stehende Platz). Eine Möglichkeit das selbst in die hand zu nehmen findest du hier im Forum:

Rescale Madvertise Banner-Image

Vielleicht hilfts dir.

Grüße
Richard

04.10.2011 20:48:10 via Website

Danke, das war wirklich sehr hilfreich.

Ich habe den Code noch ein wenig abgewandelt, damit das Seitenverhältnis gewahrt bleibt und auch nur skaliert wird, wenn das Bild tatsächlich größer als die Bitmap ist.
Außerdem wird nur auf max. 480px skaliert, was genau der Breite eines 800er Bildschirms im Portrait Modus entspricht.
Sonst würde die Grafik speziell im Landscape Mode und auf Tablets sehr pixelig.

1public StaticBannerView(Context context, Bitmap bannerBitmap) {
2 super(context);
3 if (bannerBitmap != null) {
4 int width = bannerBitmap.getWidth();
5 int height = bannerBitmap.getHeight();
6
7 Display display = ((Activity)context).getWindowManager().getDefaultDisplay();
8
9 // scale to a maximum width of 480 (full width on a 480x800 screen in portrait)
10 int newWidth = Math.min(display.getWidth(), 480);
11
12 if (newWidth > width) { // check if scaling is needed
13 // calculate the scale
14 float scale = ((float) newWidth) / (float) width;
15 // create a matrix for the manipulation
16 Matrix matrix = new Matrix();
17 // resize the bitmap
18 matrix.postScale(scale, scale);
19
20 Bitmap resizedBitmap = Bitmap.createBitmap(bannerBitmap, 0, 0,
21 width, height, matrix, true);
22 this.setImageBitmap(resizedBitmap);
23 } else {
24 this.setImageBitmap(bannerBitmap);
25 }
26 }
27 }

— geändert am 04.10.2011 20:50:21

05.10.2011 08:13:56 via Website

Achso...eins hab ich glatt vergessen.
Im MadView gibt es eine Klassenvariable "bannerHeight".
Die wird konstant auf 53 gesetzt für MMA Banner.

Dort habe ich noch eine Abfrage eingebaut, denn auf 480px skaliert braucht die MMA Grafik 75px Höhe.

05.10.2011 13:00:12 via Website

ich habe den Code ebenfalls angepasst. Habe ihn dann aber in die Klasse MadView geschrieben in die Methode "showStaticBannerView()". Dort wird das Image geladen und die View erstellt. Direkt an dieser Stelle führe ich das Scaling durch und aktualisiere auch die Membervariable "bannerHeight" mit der neuen, aktuellen Bannergröße. Funktioniert wunderbar. Den Code habe ich im oben aufgeführten Thread bereitgestellt.

05.10.2011 13:18:03 via Website

Andreas Beckers
Direkt an dieser Stelle führe ich das Scaling durch und aktualisiere auch die Membervariable "bannerHeight" mit der neuen, aktuellen Bannergröße.
Hatte ich auch überlegt, allerdings führt das dazu, dass die Anzeige "springt", sobald der Banner nachträglich reingeladen wird, weil der View vergrößert wird, nachdem er schon zu sehen ist.
Zumindest ist das so, wenn man den MadView auf INVISIBLE statt GONE stellt, was ich aber sinnvoller finde, weil die Oberfläche sonst auch springt, sobald der View VISIBLE wird.
Sowas finde ich für User eher nervig...Werbung ist ja für viele eh schon ein rotes Tuch :)

Alle Informationen, die man braucht, um zu entscheiden, ob der Banner 53px hoch sein wird, oder größer, hat man ja schon im Konstruktor.
Die Banner-Formate sind fix und die Display-Größe ebenfalls.

Gehen tut beides...muss man halt für sich entscheiden :)

— geändert am 05.10.2011 13:19:44

05.10.2011 13:25:18 via Website

Kommt immer auf das Layout an. Spätestens wenn man aber einen Alternativ Werbeanbieter einbindet, kommt man um "GONE" nicht rum. Es sei denn du willst direkt Platz für zwei Banner reservieren ;-)

Nach meinen Berechnungen ist übrigens ein madvertise-Banner skaliert auf 480px width genau 80px hoch!?

05.10.2011 13:39:52 via Website

Andreas Beckers
Kommt immer auf das Layout an. Spätestens wenn man aber einen Alternativ Werbeanbieter einbindet, kommt man um "GONE" nicht rum. Es sei denn du willst direkt Platz für zwei Banner reservieren ;-)
Das stimmt wohl, da muss man noch mehr frickeln :)

Andreas Beckers
Nach meinen Berechnungen ist übrigens ein madvertise-Banner skaliert auf 480px width genau 80px hoch!?
Habs nicht nachgerechnet, ich hab die 75px im Debugger aus dem skalierten Bitmap gezogen :)

EDIT:
Madvertise Doku sagt:
the MMA (mobile marketing association) banner is a standard banner, madvertise decides for every request which resolution is needed for the requesting device. The ration is always 1:6
Wären also tatsächlich 80px. Da guck ich doch glatt nochmal nach, danke für den Hinweis.

— geändert am 05.10.2011 13:44:14

07.10.2011 17:58:38 via Website

Hallo zusammen,

das ist ja super, dass ihr euch bereits gegenseitig helfen konntet. Wir waren etwas zu spät dran mit einer Antwort :bashful:
Wir freuen uns immer darüber, wenn unsere Community unsere SDKs verbessert oder an ihre Anforderungen anpasst. Es wäre toll, wenn ihr solche Anpassungen forken könntet und über github einen Pull Request macht, dann können wir dies der gesamten Community zugänglich machen.

Viele Grüße und ein schönes Wochenende,

Euer madvertise Support Team
support@madvertise.com
www.madvertise.com

06.12.2011 10:05:38 via Website

Hallöchen nochmal.

Mir ist beim Testen aufgefallen, dass Banner mit Animation durch das Resize zu still-images werden.
Ist ja jetzt nicht wirklich Sinn der Sache.

Beim Abrufen des Banners werden ja die Daten zur Auflösung des Geräts mitgeschickt.
Warum kommt da nicht einfach ein passendes Banner zurück?
Ohne die Animation sind die meisten Werbe-Banner völlig unverständlich.

Oder gibts evtl. eine simple Möglichkeit die Animation beim resize zu erhalten?

Grüße,
Rafael

— geändert am 06.12.2011 10:06:57