我使用画布绘制了一个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;
}
}
答案 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