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;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
@ -10,7 +9,6 @@ import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
@ -29,13 +27,7 @@ public class BInstallerView extends View {
private final File segmentDir;
private final Matrix mat;
private final Bitmap bmp;
private final float viewscale;
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 Matrix matText;
Paint pnt_1 = new Paint();
@ -44,8 +36,14 @@ public class BInstallerView extends View {
int btnh = 40;
int btnw = 160;
float tx, ty;
private int imgwOrig;
private int imghOrig;
private float scaleOrig;
private int imgw;
private int imgh;
private float lastDownX;
private float lastDownY;
private float viewscale;
private boolean tilesVisible = false;
private long availableSize;
private long totalSize = 0;
@ -56,20 +54,6 @@ public class BInstallerView extends View {
public BInstallerView(Context context, AttributeSet 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());
segmentDir = new File(baseDir, "brouter/segments4");
@ -83,14 +67,8 @@ public class BInstallerView extends View {
}
tileStatus = new int[72 * 36];
float scaleX = imgwOrig / ((float) bmp.getWidth());
float scaley = imghOrig / ((float) bmp.getHeight());
viewscale = Math.min(scaleX, scaley);
matText = new Matrix();
mat = new Matrix();
mat.postScale(viewscale, viewscale);
}
public void setAvailableSize(long availableSize) {
@ -151,6 +129,25 @@ public class BInstallerView extends View {
@Override
protected void onSizeChanged(int w, int h, int oldw, int 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