gpt4 book ai didi

android - 在 ImageView 中使用矩阵缩放图像时出现问题

转载 作者:搜寻专家 更新时间:2023-11-01 08:16:19 25 4
gpt4 key购买 nike

我在扩展 Activity 的类的 onCreate 方法中有以下代码 fragment :

 ImageView view = (ImageView) findViewById(R.id.ImageView01);

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.sample_landscape, bmpFactoryOptions);

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

Log.v("IMAGEVIEWERMATRIX", "Display Width: " + display.getWidth());
Log.v("IMAGEVIEWERMATRIX", "Display Height: " + display.getHeight());

Log.v("IMAGEVIEWERMATRIX", "BMP Width: " + bmpFactoryOptions.outWidth);
Log.v("IMAGEVIEWERMATRIX", "BMP Height: " + bmpFactoryOptions.outHeight);

if (bmpFactoryOptions.outWidth > width || bmpFactoryOptions.outHeight > height) {
float heightRatio = (float) height / (float) bmpFactoryOptions.outHeight;
float widthRatio = (float) width / (float) bmpFactoryOptions.outWidth;

// WHY
heightRatio = heightRatio / 1.5f;
widthRatio = widthRatio / 1.5f;

Log.v("IMAGEVIEWERMATRIX", "heightRatio:" + heightRatio);
Log.v("IMAGEVIEWERMATRIX", "widthRatio: " + widthRatio);

float scale = widthRatio;
if (heightRatio < widthRatio) {
scale = heightRatio;
}

matrix.setScale(scale, scale);
Log.v("IMAGEVIEWERMATRIX", "Scale: " + scale);
} else {
Log.v("IMAGEVIEWERMATRIX", "NOTNOTNOT");
matrix.setTranslate(1f, 1f);
}

Bitmap realBmp = BitmapFactory.decodeResource(getResources(),
R.drawable.sample_landscape);
view.setImageBitmap(realBmp);
view.setImageMatrix(matrix);

当我运行它时,图像显示在屏幕上并按比例缩放以适合正确大小。我的问题是我必须将比例调整 1.5 才能使其正确。

heightRatio = heightRatio / 1.5f;
widthRatio = widthRatio / 1.5f;

我的直觉是,这与设备的显示密度有关,但就我的生活而言,我无法理解为什么我需要这样做。

这是布局 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/ImageView01" android:scaleType="matrix" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
</LinearLayout>

最佳答案

好的,在这里回答我自己的问题。我看到的问题与我放置图像 Assets 的位置有关。我只在 res/drawable-mdpi 文件夹中有它,我测试的设备是高密度的。因此,Android 会自动为我放大图像。为了纠正这种情况并直接处理像素,我将图像放在 res/drawable-nodpi 文件夹中。

此页面描述了此行为:http://developer.android.com/guide/practices/screens_support.html在“Android 如何支持多个屏幕”下。

关于android - 在 ImageView 中使用矩阵缩放图像时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com