У меня очень простая задача - нарисовать фоновое изображение в пользовательском представлении.Я создаю растровое изображение и масштабирую его, чтобы соответствовать ширине и высоте представления.Это делает приложение более медленным, примерно вдвое быстрее (я печатаю значение времени каждые 10 миллисекунд для измерения скорости работы).Это код:
public class GView extends View {
int w, h;
Bitmap bg;
int time = 0;
boolean created = false;
public GView(Context context) {
super(context);
bg = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
new Timer();
}
@Override
public void onDraw(Canvas c) {
Paint p = new Paint();
if(!created) {
w=getWidth();
h=getHeight();
p.setColor(Color.RED);
p.setTextSize(40);
bg = Bitmap.createScaledBitmap(bg, w, h, false);
created = true;
}
if(created) {
time++;
c.drawBitmap(bg, 0,0,null);
c.drawText(time+"", (int)(w/4), (int)(h/4), p);
}
}
class Timer extends Handler {
private Timer() {
handleMessage(obtainMessage(0));
}
@Override
public void handleMessage(Message m) {
invalidate();
sendMessageDelayed(obtainMessage(0), 10);
}
}
}
К вашему сведению, исходное изображение 300x225.Разрешение экрана моего планшета, на которое я масштабирую изображение, составляет 1280x800.Дело в том, что если я масштабирую фоновое изображение, например, (int) (. 8 * w), (int) (. 8 * h) или уменьшаем или вообще не масштабирую изображение, то оно работает быстро, как и ожидалось.
Я пытался использовать ImageView и использовать setImageResource (R.drawable.my_image), но это было так же медленно.Я думал, что рисование изображения, чтобы соответствовать фону, должно быть очень простым для любых языков программирования, но у меня была эта проблема очень долго, даже после долгих поисков.Я надеюсь, что кто-нибудь может дать мне правильный ответ.Я был бы очень признателен за это.