如何克服屏幕尺寸问题?

时间:2016-05-26 07:46:43

标签: android canvas

我使用画布绘制了一个tic tac toe游戏UI。当我在三星手机上运行它时,这个用户界面是完美的,但是当我在摩托罗拉上运行它时会给我一个屏幕尺寸问题。

package com.example.asad.tictoe;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.nfc.Tag;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

/**
 * Created by asad on 5/25/16.
 */
public class caanvas extends View {
    ;

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

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setColor(Color.LTGRAY);
        paint.setStrokeWidth(10);
        canvas.drawLine(250, 300, 250, 1000, paint);
        canvas.drawLine(480, 300, 480, 1000, paint);
        canvas.drawLine(40, 520, 695, 520, paint);
        canvas.drawLine(40, 785, 695, 785, paint);

    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        float x = ev.getX();
        float y = ev.getY();

        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

有关于支持多个屏幕的指南,因为它在最佳实践部分"在您的应用程序代码中不使用硬编码像素值"所以你应该使用它来获取屏幕尺寸。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int h = metrics.heightPixels;
int w = metrics.widthPixels;

然后绘制画布取决于屏幕尺寸。

在您的情况下,您在View类中,因此您可以使用

int h = getContext().getResources().getDisplayMetrics().heightPixels
int w = getContext().getResources().getDisplayMetrics().widthPixels

https://developer.android.com/guide/practices/screens_support.html