Use View dimensions instead of display dimensions

This commit is contained in:
Manuel Fuhr 2021-10-20 07:54:08 +02:00
parent 50a7c2244f
commit b8496ffe5e

View file

@ -1,6 +1,5 @@
package btools.routingapp; package btools.routingapp;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -10,7 +9,6 @@ import android.graphics.Color;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Paint; import android.graphics.Paint;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@ -29,13 +27,7 @@ public class BInstallerView extends View {
private final File segmentDir; private final File segmentDir;
private final Matrix mat; private final Matrix mat;
private final Bitmap bmp; private final Bitmap bmp;
private final float viewscale;
private final int[] tileStatus; private final int[] tileStatus;
private final int imgwOrig;
private final int imghOrig;
private final float scaleOrig;
private final int imgw;
private final int imgh;
private final float[] testVector = new float[2]; private final float[] testVector = new float[2];
private final Matrix matText; private final Matrix matText;
Paint pnt_1 = new Paint(); Paint pnt_1 = new Paint();
@ -44,8 +36,14 @@ public class BInstallerView extends View {
int btnh = 40; int btnh = 40;
int btnw = 160; int btnw = 160;
float tx, ty; float tx, ty;
private int imgwOrig;
private int imghOrig;
private float scaleOrig;
private int imgw;
private int imgh;
private float lastDownX; private float lastDownX;
private float lastDownY; private float lastDownY;
private float viewscale;
private boolean tilesVisible = false; private boolean tilesVisible = false;
private long availableSize; private long availableSize;
private long totalSize = 0; private long totalSize = 0;
@ -56,20 +54,6 @@ public class BInstallerView extends View {
public BInstallerView(Context context, AttributeSet attrs) { public BInstallerView(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
DisplayMetrics metrics = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
imgwOrig = metrics.widthPixels;
imghOrig = metrics.heightPixels;
int im = Math.max(imgwOrig, imghOrig);
scaleOrig = im / 480.f;
matText = new Matrix();
matText.preScale(scaleOrig, scaleOrig);
imgw = (int) (imgwOrig / scaleOrig);
imgh = (int) (imghOrig / scaleOrig);
File baseDir = ConfigHelper.getBaseDir(getContext()); File baseDir = ConfigHelper.getBaseDir(getContext());
segmentDir = new File(baseDir, "brouter/segments4"); segmentDir = new File(baseDir, "brouter/segments4");
@ -83,14 +67,8 @@ public class BInstallerView extends View {
} }
tileStatus = new int[72 * 36]; tileStatus = new int[72 * 36];
matText = new Matrix();
float scaleX = imgwOrig / ((float) bmp.getWidth());
float scaley = imghOrig / ((float) bmp.getHeight());
viewscale = Math.min(scaleX, scaley);
mat = new Matrix(); mat = new Matrix();
mat.postScale(viewscale, viewscale);
} }
public void setAvailableSize(long availableSize) { public void setAvailableSize(long availableSize) {
@ -151,6 +129,25 @@ public class BInstallerView extends View {
@Override @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) { protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh); super.onSizeChanged(w, h, oldw, oldh);
imgwOrig = getWidth();
imghOrig = getHeight();
int im = Math.max(imgwOrig, imghOrig);
scaleOrig = im / 480.f;
matText.preScale(scaleOrig, scaleOrig);
imgw = (int) (imgwOrig / scaleOrig);
imgh = (int) (imghOrig / scaleOrig);
float scaleX = imgwOrig / ((float) bmp.getWidth());
float scaley = imghOrig / ((float) bmp.getHeight());
viewscale = Math.min(scaleX, scaley);
mat.postScale(viewscale, viewscale);
tilesVisible = false;
} }
@Override @Override