Android从setImageBitmap缩放imageview

时间:2013-05-25 11:25:29

标签: android android-imageview android-image

我有这段代码:

<ImageView
android:id="@+id/listitem_logo"
android:layout_width="match_parent"                                   
android:layout_height="wrap_content" />

imageview_logo.setImageBitmap(bit); // comes from assets
imageview_logo.setAdjustViewBounds(true);        
imageview_logo.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageview_logo.setBackgroundColor(0x00000000); 
imageview_logo.setPadding(0, 0, 0, 0);
imageview_logo.setVisibility(v.VISIBLE);

以这种方式加载图像时,似乎没有进行缩放。但是,如果我通过setImageDrawable() r.res。加载图像,则ImageView内的图像会调整大小。但是,我需要使用setImageBitmap(),因为我通过assets文件夹加载我的图像。

我在这里错过了一些设置吗?这将使Android调整大小并缩放位图,因此它使用ImageView的全宽度?我想我可以自己在代码中做到这一点,但是我想我只想通过设置一些属性来支持我想做的事情。

2 个答案:

答案 0 :(得分:13)

无法信任系统,特别是有时候表现得非常不同的android。 您可以调整位图的大小。

height = (Screenwidth*originalHeight)/originalWidth;

这将产生适当的高度。 如上所述,width等于屏幕宽度。

Bitmap pq=Bitmap.createScaledBitmap(pq,Screenwidth,height, true);

答案 1 :(得分:7)

由于我需要一些时间来弄清楚完成这项工作的完整代码,我在这里依靠之前的答案发布了一个完整的例子:

   ImageView bikeImage = (ImageView) view.findViewById(R.id.bikeImage);
   AssetLoader assetLoader = new AssetLoader(getActivity());
   Bitmap bitmap = assetLoader.getBitmapFromAssets(
                Constants.BIKES_FOLDER + "/" + bike.getName().toLowerCase()
                        .replace(' ', '_').replace('-', '_') + ".png");
   int width = getActivity().getResources().getDisplayMetrics().widthPixels;
   int height = (width*bitmap.getHeight())/bitmap.getWidth();
   bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
   bikeImage.setImageBitmap(bitmap);