在Android全屏模式下绘制图像

5

我已经知道如何在安卓上将我的Activity设置为全屏,现在我需要在这个屏幕上绘制一张图片。

这是我的XML布局。

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

这张图片是在ImageView中动态生成并绘制的。

以下是我在Activity中的代码:

public void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.main);
}

但是当运行时,Activity是全屏的,但是ImageView却在中心调整。

出了什么问题?

我添加了以下代码以查看组件的尺寸。

    View view = getWindow().getDecorView();
    Log.i("RMSDK:J:IbaReader(decor)",
            "[w=" + view.getWidth() + ":h=" + view.getHeight() + "]");
    Log.i("RMSDK:J:IbaReader(img)",
            "[w=" + img.getWidth() + ":h=" + img.getHeight() + "]");

在这两种情况下,结果均为[w=320:h=480]。
这是我的绘图方法。
private void draw() {
    byte[] image = services.getImageBuffer(600, 1024);
    Bitmap bmp = Bitmap.createBitmap(600, 1024, Bitmap.Config.RGB_565);
    int row = 0, col = 0;
    for (int i = 0; i < image.length; i += 3) {
        bmp.setPixel(col++, row, image[i + 2] & image[i + 1] & image[i]);
        if (col == 600) {
            col = 0;
            row++;
        }
    }
    img.setImageBitmap(bmp);
}
2个回答

7

android:scaleType="fitXY"添加到您的imageview


通过设置fitXY,它将独立于X和Y进行缩放,以使src完全匹配dst。对我来说它很好用。你是通过什么方式设置图像的?请添加您的图像设置代码。 - Labeeb Panampullan
1
我不确定实际问题是什么,但我想指出,通常情况下,除非是九宫格图像,否则不建议使用fitXY进行缩放。如果纵横比很重要,请使用fitCenter或centerCrop。 - Kevin Coppock
实际上,有正确的属性可以添加到它来缩放到全屏。 - Marcos Vasconcelos

0
除了设置android:scaleType="fitXY"之外,我们可以使用以下方法之一来移除活动标题栏,使图像真正全屏:

在setContentView()之前设置窗口首选项

requestWindowFeature(Window.FEATURE_NO_TITLE);

或者在 AndroidManifest 文件中设置主题选项

android:theme="@android:style/Theme.NoTitleBar"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接