В моем приложении у меня есть Activity
, чтобы показать профиль пользователя. Пользователь может настроить изображение своего профиля, выбрав его на снимках камер или изображений в Facebook, и т. Д. Однако эти фотографии могут быть очень большими, поэтому мне нужно как-то автоматически масштабировать компьютеры, если они слишком большие.Автоматическое изменение размера изображений в зависимости от размера дисплея
EDIT
В связи с ответом на мой вопрос я пытался что-то. Я создал несколько вспомогательных методов:
public static int getDisplayWidth(Activity activity) {
DisplayMetrics displaymetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
return displaymetrics.widthPixels;
}
public static int getDisplayHeight(Activity activity) {
DisplayMetrics displaymetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
return displaymetrics.widthPixels;
}
public static int getDrawableWith(Context context, int id) {
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), id);
return bitmap.getWidth();
}
public static int getDrawableHeight(Context context, int id) {
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), id);
return bitmap.getHeight();
}
public static int getHeightOfImage(int originalWidth, int originalHeight, int targetWidth) {
double ratio = ((double)originalWidth/(double)originalHeight);
return (int)(targetWidth/ratio);
}
И я теперь пытался создать с измененным размером вытяжки и установить его на мой ImageView:
RelativeLayout.LayoutParams layoutParamsView = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
this.setLayoutParams(layoutParamsView);
int originalWidth = Helper.getDrawableWith(this.getContext(), R.drawable.background_wave);
int originalHeight = Helper.getDrawableHeight(this.getContext(), R.drawable.background_wave);
int targetWidth = Helper.getDisplayWidth((Activity)this.getContext());
int targetHeight = Helper.getHeightOfImage(originalWidth, originalHeight, targetWidth);
RelativeLayout.LayoutParams layoutParamsImageview = new RelativeLayout.LayoutParams(targetWidth, targetHeight);
layoutParamsImageview.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layoutParamsImageview.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
Drawable drawable = Helper.getScaledDrawable(this.getContext(), R.drawable.background_wave, targetWidth, targetHeight);
this.imageViewBackgroundWave = new ImageView(this.getContext());
this.imageViewBackgroundWave.setLayoutParams(layoutParamsImageview);
this.imageViewBackgroundWave.setImageDrawable(drawable);
this.addView(this.imageViewBackgroundWave);
Это просто отлично работает, чтобы изменить размер изображения в зависимости от размера дисплея ,
спасибо. Это был правильный ответ, и я обновил сообщение, чтобы показать решение. – Mulgard