Я новичок в кодировании Android. В качестве первого проекта я решил портировать игру ZX Spectrum. Я подготовил растровые рамки автомобиля и кнопки, которые будут масштабироваться в зависимости от размера экрана. Я поместил изображения в папки «drawable» и «drawable-hdpi», и они, похоже, работают на моем телефоне LG Leon, но не работают на других телефонах. Похоже, изображение не масштабируется. https://mechanism.fr/misc/not_scaled.png
вот мой код: объявление переменных:
Rect source1;
Rect dest1;
Rect arrow_box;
Rect left_box;
Rect right_box;
Rect up_box1;
Rect down_box1;
Rect up_box2;
Rect down_box2;
пример вычисления одной пары измерений Rect:
private void calculateDimensions(){
(...)
source1=new Rect(0,0,128,100);
arrow_box=new Rect(0,0,300,300);
left_box=new Rect((int)(0+boxxy/2),(int)(wysokosc*0.7),(int)(0+boxxy/2+boxxy),(int)(wysokosc*0.7+boxxy));
и ответственный коддля рисования:
Paint drawPaint2 = new Paint();
canvas.drawBitmap(arrow_left_off,arrow_box,left_box,drawPaint2);
canvas.drawBitmap(arrow_right_off,arrow_box,right_box,drawPaint2);
canvas.drawBitmap(arrow_up_off,arrow_box,up_box1,drawPaint2);
canvas.drawBitmap(arrow_down_off,arrow_box,down_box1,drawPaint2);
canvas.drawBitmap(arrow_up_off,arrow_box,up_box2,drawPaint2);
canvas.drawBitmap(arrow_down_off,arrow_box,down_box2,drawPaint2);
размеры рассчитываются после создания вида холста:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
kanwas=new CanvasV(this);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(kanwas);
getDimensions();
calculateDimensions();
updateScreen();
}
Я не совсем понимаю, в чем проблема.
Я попытался скопировать изображения в папки «drawable» и «drawable-hdpi»