Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Avatar-Spiegelung fehlerhaft in allen Android-Versionen



Indy
14.07.2012, 13:05
Hallo,
Der dynamische Spiegelungseffekt bei den Avataren in der Themenansicht ist in eigentlich allen Android-Versionen fehlerhaft. Die gespiegelte Version des Bildes wird nicht, wie eigentlich vorgesehen, in der Höhe abgeschnitten, sondern behält die volle Höhe des Originals, was dazu führt, dass die Usernamen verdeckt werden.

Da Bilder mehr als tausend Worte sagen, habe ich auch noch eine hübsche Bilderserie angehängt, die das Problem erkenntlichen machen sollte. (Bilder stammen von einem Gerät mit Android 4.0.4 und einem Gerät mit Android 2.3.3)
1451914520145211452214523

Hat jemand der Administratoren hier ein Android-Smartphone, um sich das Problem genauer anzusehen? Ich kann das Problem von außerhalb nur schlecht reproduzieren, da z.B. die Original-Demos des Skriptes, mit dem der Effekt eingebunden wurde, keine solchen Fehler unter Android zeigen: http://cow.neondragon.net/stuff/reflection/

Knuckles
14.07.2012, 13:34
@Indy

Ich habe das eben mit Ice Cream Sandwich probiert und kann das Problem nur beim Standard-Internet-Browser reproduzieren.
Mit Chrome und Opera Mobile werden die Spiegelungen richtig dargestellt.

Indy
14.07.2012, 13:52
@Indy

Ich habe das eben mit Ice Cream Sandwich probiert und kann das Problem nur beim Standard-Internet-Browser reproduzieren.
Mit Chrome und Opera Mobile werden die Spiegelungen richtig dargestellt.

Ok, danke. Dass der mobile Chrome-Browser sich hier anders verhält, ist gut zu wissen. Habt ihr eigentlich ein Test-Forum eingerichtet? Dann könnte ich versuchen, die Forum-Webseite mit weinre zu debuggen.
http://people.apache.org/~pmuellr/weinre/docs/latest/

Indy
15.07.2012, 17:51
Ok, habe jetzt ein wenig rumprobiert. In Webkit-Browsern kommt überhaupt nicht das reflection-Skript zum Einsatz, sondern eine CSS-Regel:


<style type="text/css">
.reflect {
-webkit-box-reflect: below -1px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.67,transparent), to(#fff));
margin-bottom: 30px;
}
</style>

Android rendert leider die -webkit-box-reflect-Eigenschaftnicht korrekt und ich konnte auf die Schnelle keinen Workaround finden, der dieses Problem beheben könnte. Wäre es also möglich, per Javascript alle Android-Browser von dieser Eigenschaft auszuschließen? Alternativ könnte man auch einfach die reflection.js einbinden, die in anderen Browsern zum Einsatz kommt. Die macht keine Probleme im Android-Browser.


<script type="text/javascript">
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.search("android") > -1)
{
var cssCode = '.reflect {-webkit-box-reflect: none !important;}';
var styleElement = document.createElement("style");
styleElement.type = "text/css";
styleElement.appendChild(document.createTextNode(cssCode));
document.getElementsByTagName("head")[0].appendChild(styleElement);
}
</script>

Ranmaru
17.07.2012, 05:40
Schau mal, ob's jetzt besser ist. Ich hab jetzt 'ne extra Browserweiche fuer Android eingebaut, die reflection.js anstatt dem CSS-Foo benutzt.

(Und ich hoffe einfach mal, dass die korrekte Weiche is_browser('android') ist. vB ist so unglaublich scheisse dokumentiert, dass so was immer ein guessing game ist. -_-)

Okay, Kommando zurueck. vB hat keine eingebaute Weiche fuer Android. Weder in is_browser noch im $useragent-Array. Beschwerden auf vb.org gibt's auch schon, weil iPhone, iPod und iPad naemlich wohl drin sind. Muss ich irgendwie anders machen.

Indy
17.07.2012, 07:25
Also wenn es über PHP ablaufen soll, ginge es natürlich auch direkt mit $_SERVER['HTTP_USER_AGENT']. Oder verhindert vbulletin die Nutzung dieses Arrays?

Ranmaru
17.07.2012, 08:26
Nein, das geht schon. Aber dafuer muesste ich in den Quellcode der PHP-Dateien, und das vermeiden wir tunlichst, weil das beim Update das halbe Forum zerschiesst.
Alternativ ginge es natuerlich ueber ein Plugin, aber das muss Lukas machen, weil ich keinen Zugriff auf die Plugin-API habe.

Indy
17.07.2012, 09:00
Achso, ich dachte schon, du meinst PHP nachdem von einem $useragent-Array die Rede war. Habe völlig vergessen, dass vbulletin bei seinen hauseigenen Variablen auch ein $ voranstellt. Und die $useragent enthält nicht den kompletten Useragent? Wofür ist die dann überhaupt gut?