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