Android: как переопределить плотность и просто использовать пиксели? - PullRequest
1 голос
/ 18 апреля 2011

Я использую холст и растровое изображение для рисования графики, такой как круги, текст и т. Д., И хочу, чтобы мои графические процедуры использовали фактические пиксели на основе истинного разрешения экрана в пикселях, как это было бы в графическом приложении для ПК. Очевидно, что ОС Android предназначена для использования плотностей, чтобы попытаться предоставить пользователю хороший опыт, независимо от фактического размера экрана и разрешений устройства. Однако, когда я даю команду установить пиксель x, y, тогда было бы неплохо фактически установить пиксель x, y, а система не должна переопределять мои координаты - возможно ли переопределить систему, чтобы установить пиксель x, y?

Например, если экран установлен на 320x480 (G1 или Hero), он работает нормально, но на планшете (IMX515) с экраном 800x600 графика всегда растягивается по горизонтали.

Я пытался установить разную плотность Bitmap и Canvas, но ничего не работает - на планшете они всегда растягиваются, чтобы заполнить ширину экрана. Я тоже пробовал в манифесте

<supports-screens android:anyDensity=”true” />  

.

Вот некоторые фрагменты кода, основанные на SurfaceView: -

(1) В создании и настройке растрового изображения (screenWidth, screenHeight из метрик): -

backBitmap=Bitmap.createBitMap(screenWidth,screenHeight,Bitmap.config.ARGB_8888);

//backbitmap.setDensity(160)

backCanvas=new Canvas(backBitmap)

//backCanvas.setDensity(160);

.

(2) В процедуре рисования: -

paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED); 
backCanvas.drawCircle(50,50,30,paint);

.

(3) В методе Canvas onDraw: -

protected void onDraw(Canvas canvas){
  if (drawingFlag==true){

    // canvas.setDensity(160)

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

}

. , * Решение ****** Удивительно, насколько я неряшлив - я работал с Media Player и оставил следующий код при создании SurfaceView: -

holder=mySurfaceView.getHolder();
holder.setFixedSize(320,480);

Это вынудило рисунок в 320x480 затем масштабировать по экрану. Меняется, как указано ниже, исправленная проблема

holder.setFixedSize(800,600) 

1 Ответ

1 голос
/ 19 апреля 2011

.,* Solution ** Удивительно, насколько я неряшлив - я работал с Media Player и оставил следующий код при создании SurfaceView: -

holder=mySurfaceView.getHolder();
holder.setFixedSize(320,480);

Это заставлялорисуя в 320x480 затем масштабируя по экрану.Меняется, как указано ниже, исправленная проблема

holder.setFixedSize(800,600)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...