Я хочу показать изображения, используя drawBitmap () метод. Но прежде чем я хочу изменить размеры его согласно размерам экрана. У меня есть проблема с качеством изображения результата. Вы видите скриншоты и испытательный кодекс ниже. Как я могу изменить размеры изображений во времени выполнения с хорошим качеством?
Спасибо за решения.
Исходное изображение: текст высокого звука http://dl.dropbox.com/u/709109/gradient.png
Скриншот результата на устройстве: текст высокого звука http://dl.dropbox.com/u/709109/device.png
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import java.io.IOException;
import java.io.InputStream;
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(new View(this) {
@Override
protected void onDraw(Canvas canvas) {
Bitmap unscaledBitmap;
try {
InputStream in = getAssets().open("images/gradient.png");
unscaledBitmap = BitmapFactory.decodeStream(in);
in.close();
canvas.drawBitmap(unscaledBitmap, null, new Rect(0, 0, 320, 480), null);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
Пожалуйста, обратитесь к Ответ Romain ниже.
Я хотел бы удалить этот ответ, но я не могу, поскольку он помечен как принято.
Обратите внимание, что Android [Когда этот ответ был изначально написан, без явного запрашивания 32-битного цвета] будет делать только 16-битный цвет, поэтому могут быть времена, когда вы получаете нежелательные артефакты.
Вы также можете попробовать использовать варианты Doury, чтобы сообщить Android автоматически применить дизеров, который, хотя не идеально, может помочь заставить все выглядеть немного лучше.
Большой вопрос. Мой ответ: используйте тип A ('<')
i < strlen (s)
, а не индекс последнего элемента , поэтому однородность важна. Еще одна проблема связана со всей этой конструкцией. i
появляется в нем 3 раз , поэтому он может быть ошибочным. Конструкция for-loop говорит , как делать вместо , что делать . Я предлагаю использовать следующее:
BOOST _ FOREACH (i, IntegerInterval (0,7))
Это более ясно, компилирует точно те же команды asm и т.д. Спросите у меня код IntegerInterval, если хотите.
-121--2035369- Для абсолютной скорости используется сверхразмерный < canvas >
внутри < div >
с набором overflow: hidden
, затем используются обычные методы DOM для прокрутки < canvas >
внутри < div >
.
Конечно, это приносит в жертву использование памяти в пользу скорости.
-121--3832530-Извлечение http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html (для использования с unscaledBitmap = BitmapFactory.decaseStream (in);
В изображение можно добавить параметры настройки качества. Я предполагаю, что качество ухудшается, так как вы не сдаете никаких настроек того, как должно обрабатываться изображение.
Кроме того, если ваша функция измерения изменений не уважает отношение аспекта изображения, качество затронута. Вы можете найти некоторый алгоритм размера в Интернете Проверьте это
Этот удобный шаблон можно использовать для выполнения во время выполнения.
Вместо возврата кода ошибки (например, HRESULT) возвращается return_code
class return_value
{
public:
explicit return_value(T value)
:value(value), checked(false)
{
}
return_value(const return_value& other)
:value(other.value), checked(other.checked)
{
other.checked = true;
}
return_value& operator=(const return_value& other)
{
if( this != &other )
{
assert(checked);
value = other.value;
checked = other.checked;
other.checked = true;
}
}
~return_value(const return_value& other)
{
assert(checked);
}
T get_value()const {
checked = true;
return value;
}
private:
mutable bool checked;
T value;
};
-121--1051699- Я не включаю класс ядра или не строю библиотеку ядра или что-либо из этого.
да, вы:
проблемы обработки «javax/xml/XMLConstants.class»
java. * и javax. * Оба числа. вы можете использовать переключатель --core-library, если хотите проигнорировать это в тестовом приложении, но обратите внимание на предупреждение: "ваше приложение все равно не сможет построить или запустить, в какой-то момент. Пожалуйста, будьте готовы к сердитым клиентам, которые обнаружат, например, что ваше приложение перестает работать после обновления операционной системы. Вы будете виноваты в этой проблеме ".
Правильное исправление, как говорится, для приложения доставки, состоит в переупаковке этих классов (т.е. переместить их в новый каталог, соответствующим образом отредактировать их" упаковочные "строки и обновить" импортные "строки в их вызывающих).
-121--2159438-Вместо изменения размера во время рисования (что будет очень дорого) попробуйте изменить размер в растровом изображении вне экрана и убедитесь, что значение Bitmap равно 32 битам (ARGB888).