Android масштабирование imageview из setImageBitmap

у меня есть этот код:

<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 ()Р.РЭС. изображения внутри ImageView изменяется. Однако мне нужно использовать setImageBitmap (), так как я загружаю свои изображения через папку assets.

я пропустил некоторые настройки здесь? Это позволит Android изменять размер и масштаб растрового изображения, поэтому он использует полную ширину Графическое представление? Я думаю, что могу сделать это сам в коде, но я бы подумал, что то, что я хочу сделать, будет поддерживаться только установкой некоторых свойств.

2 ответов


Не могу доверять системе для всего специально android, который ведет себя очень по-разному иногда. Вы можете изменить размер растрового изображения.

height = (Screenwidth*originalHeight)/originalWidth;

это создаст соответствующую высоту. ширина равна ширине экрана, как вы упомянули.

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

поскольку мне нужно было немного времени, чтобы выяснить полный код, чтобы сделать эту работу, я размещаю полный пример здесь, опираясь на предыдущий ответ:

   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);