[英]Reuse drawable images for different screen sizes and densities on Android
[英]Loading images to different screen sizes and densities in game development?
下面的代碼在不同的屏幕尺寸上繪制一個正方形和一個圓形,以改變圖像之間的距離。 實際的位圖以及不同的屏幕尺寸和密度可能會更加混亂。 這是代碼
package com.badlogic.androidgames;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class ShapeTest extends Activity {
class RenderView extends View {
Paint paint;
public RenderView(Context context) {
super(context);
paint = new Paint();
}
protected void onDraw(Canvas canvas) {
canvas.drawRGB(255, 255, 255);
paint.setColor(Color.RED);
canvas.drawLine(0, 0, canvas.getWidth()-1, canvas.getHeight()-1, paint);
paint.setStyle(Style.STROKE);
paint.setColor(0xff00ff00);
canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, 40, paint);
paint.setStyle(Style.FILL);
paint.setColor(0x770000ff);
canvas.drawRect(100, 100, 200, 200, paint);
invalidate();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(new RenderView(this));
}
}
這是一張照片:
我應該如何進行?
問題在於矩形的邊界不取決於屏幕尺寸。
canvas.drawRect(100, 100, 200, 200, paint);
將以像素為單位。
您需要的是寬度,高度,頂部和左側的適當乘數。 (float)(height / width)
或(float)(width / height)
-取決於夾心較大。
canvas.drawRect(leftOffset* ratio, topOffset * ratio, baseWidth * ratio, baseHeight * ratio, paint);
如果您使用真實的位圖,則還需要將其縮放到正確的大小。
我認為這段代碼獲取了適當大小的位圖:
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.