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

  • Antworten:13
Rafael K.
  • Forum-Beiträge: 2.359

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? :)

Antworten
Richard R.
  • Forum-Beiträge: 90

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

Rafael K.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

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

Richard R.

Antworten
Richard R.
  • Forum-Beiträge: 90

04.10.2011, 22:43:22 via Website

Danke für die Optimierung. Es lebe OpenSource :-)

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

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.

Antworten
Andreas Beckers
  • Forum-Beiträge: 29

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.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

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

Antworten
Andreas Beckers
  • Forum-Beiträge: 29

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!?

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

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

Antworten
Andreas Beckers
  • Forum-Beiträge: 29

06.10.2011, 10:37:14 via Website

Rafael K.
Danke für den Hinweis Andreas.

Gern geschehen. Auf das mehr Leute den Banner erwischen ;-)

Antworten
madvertise Berlin
  • Forum-Beiträge: 25

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

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

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

Antworten
madvertise Berlin
  • Forum-Beiträge: 25

28.12.2011, 20:37:34 via Website

Hallo,

könntest Du uns bitte sagen, welche Android-Version Du beim Testen verwendest und ob das Gif vor dem Resize auf dem selben Gerät animiert dargestellt wurde.

Viele Grüße,

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

Antworten