Я пишу представление, которое должно отображать drawable, который кажется «никогда не заканчивается». Он должен быть дважды или третьим, отображать и медленно перемещаться по экрану.Android Drawable выглядит уродливым из-за масштабирования
Поэтому я изучил некоторые samplecode на Google и нашел важных направлений
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);
}
Чтобы изменить масштаб изображения и чем
// 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);
}
Чтобы нарисовать движущееся изображение. Изображения уже движутся, все в порядке.
Но, и это точка моего вопроса, изображение выглядит очень уродливо. Его оригинал составляет 960 * 190 пикселей на 240 пикселей. Он должен быть нарисован внутри вида с шириной 80 дюймов и шириной «fill_parent».
Он должен выглядеть так же (и хорошо) на всех устройствах. Я много пробовал, но не знаю, как сделать картинку красивой.
Благодарим за помощь. С уважением, До
Спасибо за ваш ответ. Извините за отсутствие изображения. Это растровое изображение с пиксельным изображением. Есть только проблема, о которой я не знаю, какой размер и разрешение должно иметь мое изображение и какая папка (drawable, drawable-hdpi, drawable-normal-mdpi и т. Д.) Она должна быть. Я уже изучил страницы google, рассказывая об этой теме, но это не дает мне никаких подсказок. Ширина изображения - ширина экрана, высота - 80dip. Другой вопрос: почему это «редкий случай»? – Till
@ Должно быть: потому что большую часть времени вы обычно используете векторные изображения или изображения, которые являются гладкими, и поэтому их можно автоматически масштабировать. Pixel-art, с другой стороны, обычно требует ручной настройки для масштабированного изображения. Попробуйте отключить билинейную фильтрацию (и, таким образом, используя фильтр ближайших соседей) и посмотрите, будет ли она лучше работать в вашем случае: 'Bitmap.createScaledBitmap (backgroundImage, (int) (canvasWidth * sf), canvasHeight, false);'. Не забудьте изменить размер только на целое число или малую долю кратного исходного изображения (например,если оригинал 100x100, вы можете попробовать 300x300, 200x200, 50x50, 25x25, 20x20) –
@ Поверните: попробуйте сыграть в Photoshop или GIMP или как вам понравится ваш любимый редактор изображений, и попытайтесь найти параметр, который выглядит приемлемым, а затем попробуйте воспроизвести этот параметр в Android (или просто отправить несколько растровых изображений, если вы не можете воспроизвести настройку на Android). Убедитесь, что вы используете фильтрацию ближайшего соседа или специализированный фильтр масштабирования пикселей (например, scale2x), поскольку вы не хотите, чтобы размытые края делали другие фильтры масштабирования (эти фильтры полезны для фотографий, где размытые края увеличивают «воспринимаемые «разрешение изображения, в вашем случае вы хотите чистый, четкий край) –