android:运行时调整大小的图像质量

shi*_*dev 13 android drawing resize image draw

我想使用drawBitmap()方法显示图像.但在我想根据屏幕尺寸调整大小之前.我的结果图像质量有问题.您可以在下面看到屏幕截图和测试代码.如何在运行时以高质量调整图像大小?

谢谢你的解决方案.

原始图片: alt text http://dl.dropbox.com/u/709109/gradient.png

设备上的结果屏幕截图: alt text http://dl.dropbox.com/u/709109/device.png

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

import java.io.IOException;
import java.io.InputStream;

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout container = (LinearLayout) findViewById(R.id.container);
        container.addView(new View(this) {
            @Override
            protected void onDraw(Canvas canvas) {
                Bitmap unscaledBitmap;
                try {
                    InputStream in = getAssets().open("images/gradient.png");
                    unscaledBitmap = BitmapFactory.decodeStream(in);
                    in.close();
                    canvas.drawBitmap(unscaledBitmap, null, new Rect(0, 0, 320, 480), null);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*Guy 15

不要在绘图时调整大小(这将是非常昂贵的),尝试在屏幕外位图中调整大小并确保位图为32位(ARGB888).


Chr*_*Orr 10

请参阅下面的Romain答案.

我想删除这个答案,但我无法删除,因为它被标记为已被接受.


请注意,Android [最初编写此答案时,未明确请求32位颜色]只会执行16位颜色,因此有时可能会出现不需要的工件.

您也可以尝试使用抖动选项告诉Android自动应用抖动,虽然不完美,但可以帮助让事情看起来更好一些.

  • 这是真实的2年前,它只是应用程序要求.32位现在是默认值. (3认同)