0

我的显示位图有问题,我的原始图像 640*960 但是当我在位图中显示时,尺寸变成 120*240 ,我如何才能以原始尺寸显示?

                BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 8;
            Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), Imgid[(int)(Math.random()*Imgid.length)], options);

            ImageView iv = (ImageView)findViewById(position)
            iv.setImageBitmap(processingBitmap_Brightness(bitmap));

我记录 bitmap.getwidth() 和 getheight() 但没有 640*960

现在我可以用这段代码得到原始大小,但现在给我内存不足,所以我可以处理图像?

BitmapFactory.Options options = new BitmapFactory.Options();
    //options.inSampleSize = 4;
    options.inScaled = false;
    ImageView iv = (ImageView)findViewById(position);
    bitmap=BitmapFactory.decodeResource(getResources(), Imgid[(int)(Math.random()*Imgid.length)],options);
    iv.setImageBitmap(processingBitmap_Brightness(bitmap));     
    Log.i("ID4",bitmap.getWidth()+" * "+bitmap.getHeight());

我在xml中使用viewflipper并在代码中调用它,并在viewflipper中添加视图

for (i = 0; i<5;i++) {
FrameLayout a = new FrameLayout(this);
FrameLayout.LayoutParams lp = new  FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,   FrameLayout.LayoutParams.FILL_PARENT,Gravity.CENTER); 
a.setLayoutParams(lp);

b = new ImageView(this);
FrameLayout.LayoutParams lpiv = new    FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT,Gravity.CENTER); 
b.setId(i+1);
b.setLayoutParams(lpiv);
a.addView(b);

vf.addView(a);
}

还有我的 onFling 功能

    public boolean onFling(MotionEvent e1,MotionEvent e2,float velocityX,float velocityY){

    try {

        if(e1.getX() > e2.getX() && Math.abs(e1.getX() - e2.getX()) > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            vf.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.left_in));
            vf.setOutAnimation(AnimationUtils.loadAnimation(mContext,R.anim.left_out));


            BitmapFactory.Options options = new BitmapFactory.Options();
            //options.inSampleSize = 4;
            options.inScaled = false;
            Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), Imgid[(int)(Math.random()*Imgid.length)], options);

            ImageView iv = (ImageView)findViewById(position);
            iv.setImageBitmap(processingBitmap_Brightness(bitmap));



                    vf.showPrevious();

        }else if (e1.getX() < e2.getX() && e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            vf.setInAnimation(AnimationUtils.loadAnimation(mContext,
                    R.anim.right_in));
            vf.setOutAnimation(AnimationUtils.loadAnimation(mContext,
                    R.anim.right_out));


            BitmapFactory.Options options = new BitmapFactory.Options();
            //options.inSampleSize = 4;
            options.inScaled = false;
            Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), Imgid[(int)(Math.random()*Imgid.length)], options);

            ImageView iv = (ImageView)findViewById(position);
            iv.setImageBitmap(processingBitmap_Brightness(bitmap));


                    vf.showNext();

        }

    } catch (Exception e) {

        // nothing

    }

    return true;



}
4

2 回答 2

1

这个官方指南很好用:

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

基本上你必须设置比你需要的更小的 SampleSize。然后在下一步中缩小位图以完全适合您想要的度量。

设置 options.inSampleSize = 8; 表示您要加载 1/8 宽度和 1/8 高度的图像。因此它更小。

于 2012-07-03T05:31:49.663 回答
0

inSampleSize应该缩小图像。尝试删除并添加options.inScaled = false;

于 2012-07-03T04:48:28.387 回答