Je suis en train d'écrire une vue qui devrait afficher un dessin qui semble "jamais fin". Il doit être deux fois ou trois fois l'affichage et se déplacer lentement à travers l'affichage.Android Drawable semble moche en raison de la mise à l'échelle
donc j'ai étudié quelques-uns SampleCode par Google et a trouvé les lignes importantes
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
canvasWidth = width;
canvasHeight = height;
float sf = backgroundImage.getWidth()/canvasWidth;
backgroundImage = Bitmap.createScaledBitmap(backgroundImage,
(int) (canvasWidth * sf), canvasHeight, true);
}
Pour redimensionner l'image et que
// decrement the far background
backgroundXPos = backgroundXPos - DELTAMOVE;
// calculate the wrap factor for matching image draw
int newFarX = backgroundImage.getWidth() - (-backgroundXPos);
// if we have scrolled all the way, reset to start
if (newFarX <= 0) {
backgroundXPos = 0;
// only need one draw
canvas.drawBitmap(backgroundImage, backgroundXPos, 0, null);
} else {
// need to draw original and wrap
canvas.drawBitmap(backgroundImage, backgroundXPos, 0, null);
canvas.drawBitmap(backgroundImage, newFarX, 0, null);
}
Pour dessiner l'image en mouvement. Les images sont déjà en mouvement, c'est bon.
Mais, et c'est le point de ma question, l'image semble très moche. Son original est de 960 * 190 pixels par 240ppi. Il doit être dessiné dans une vue avec 80dip de hauteur et "fill_parent" largeur.
Il devrait sembler identique (et bon) sur tous les appareils. J'ai beaucoup essayé mais je ne sais pas comment rendre l'image belle.
Merci pour votre aide. Cordialement, Jusqu'à
Merci pour votre réponse. Désolé de ne laisser aucune image. Il s'agit d'un bitmap pixel-art. Il ya juste le problème que je ne sais pas, quelle taille et la résolution de mon image devrait avoir et quel dossier (drawable, drawable-hdpi, drawable-normal-mdpi et ainsi de suite) il doit être po étudié les pages de google parler de ce sujet, mais cela ne me donne aucune idée. La largeur de l'image est la largeur de l'écran, la hauteur est définie sur 80dip. Une autre question: pourquoi est-ce le «cas rare»? – Till
@Till: parce que la plupart du temps, vous utiliserez habituellement des images vectorielles ou des images qui sont lisses et peuvent donc être automatiquement mises à l'échelle. Pixel-art, d'autre part, nécessite généralement une modification manuelle de l'image redimensionnée. Essayez de désactiver le filtrage bilinéaire (et ainsi, en utilisant le filtre du plus proche voisin), et voyez si cela fonctionne mieux dans votre cas: 'Bitmap.createScaledBitmap (backgroundImage, (int) (canvasWidth * sf), canvasHeight, false);'. Assurez-vous de redimensionner uniquement un entier ou une petite fraction de multiples de l'image originale (par ex.si original est 100x100, vous pouvez essayer 300x300, 200x200, 50x50, 25x25, 20x20) –
@Till: essayez de jouer dans Photoshop ou GIMP ou quel que soit votre éditeur d'image préféré, et essayez de trouver un paramètre qui semble acceptable, puis essayez pour reproduire ce paramètre dans Android (ou simplement expédier plusieurs bitmaps si vous ne pouvez pas reproduire le paramètre dans Android). Assurez-vous d'utiliser le filtre voisin le plus proche ou un filtre spécialisé pixel-art (p.ex. scale2x), car vous ne voulez pas les bords flous que les autres filtres rescale font (ces filtres sont utiles pour les photos, où les bords flous "résolution de l'image, dans votre cas, vous voulez un bord net et net) –