Как сделать динамический сгенерированный макет адаптивным для разных размеров экрана и устройств - PullRequest
1 голос
/ 01 июля 2019

Пользовательский вид и его содержимое не реагируют на экран разных размеров. например фоновое изображение и маленький круг внутри игры. В общем, как сделать каждую вещь на холсте отзывчивой? Как вы видите на картинке, размер зеленого круга соответствует размеру экрана.

Один и тот же круг на экране другого размера

private int yellowX, yellowY;
private Paint yellowPaint = new Paint();


private Bitmap backgroundImage;


public flyingFishView(Context context) {
    super(context);

    backgroundImage = BitmapFactory.decodeResource(getResources(),R.drawable.background);

    yellowPaint.setColor(Color.YELLOW);
    yellowPaint.setAntiAlias(false);


}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int canvasWidth = getWidth();
    int canvasHeight = getHeight();

    canvas.drawBitmap(backgroundImage,0, 0,null);
}   

А это mainActivity:

public class MainActivity extends AppCompatActivity {

    private flyingFishView gameview;
    private Handler handler = new Handler();
    private final static long Interval = 40;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        gameview = new flyingFishView(this);
        setContentView(gameview);

       Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                handler.post(new Runnable() {

                    @Override
                    public void run() {

                        gameview.invalidate();
                    }
                });
            }
        }, 0, Interval );
    }
}
...