2016-08-08 5 views
-4

Как установить максимальную высоту ImageView во время выполнения?Как установить максимальную высоту ImageView во время выполнения

Например, у меня есть image url и ширина этой ширины больше ширины экрана. Затем я хочу установить ImageView height as screen's width, чтобы сделать ImageView квадратным.

Я не могу найти идеальное решение для этого. Любая помощь будет оценена глубоко.

+0

AFAICT, вам нужно будет сделать это вручную. То есть дайте hardcoded width/height вашему 'ImageView' – Sufian

+0

Сделайте свое изображение как« невидимым », а в onResume установите ширину и высоту вашего изображения, а затем установите его как« видимый ». Для этого вам может понадобиться отдельный поток. Надеюсь, он сработает. –

+0

@Mamta Kaundal, когда ваше приложение запущено в это время, вы получите ширину ваших устройств и установите, что на вашем изображении смотрите другой мудрый набор, который в вашей библиотеке piccasso измените размер и высоту –

ответ

0

Чтобы сделать квадрат ImageView вы можете использовать следующий пользовательский класс:

public class SquareImageView extends ImageView { 

    public SquareImageView(Context context) { 
     super(context); 
    } 

    public SquareImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SquareImageView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     //noinspection SuspiciousNameCombination 
     super.onMeasure(widthMeasureSpec, widthMeasureSpec); 
    } 
} 
1

Это не имеет значения для размера изображения, код ниже размера будет с идеальным соотношением, он сделает максимальную ширину без разрешения разрешения suck.if вы не хотите максимальной ширины, а затем измените размеры из кода. Вам понадобится пикассо.

private Dimensions getScreenDimensions() 
{ 
    DisplayMetrics metrics = new DisplayMetrics(); 
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    display.getMetrics(metrics); 
    final int widthScreen = metrics.widthPixels; 
    int heightScreen = metrics.heightPixels; 
    Dimensions screenDimen = new Dimensions(metrics.widthPixels,metrics.heightPixels); // custom class 
    return screenDimen; 
} 

    private Bitmap makeCalc(Dimensions screenDimen, Dimensions imageDimen,Bitmap bmp) 
{ 
    float widthRatio = screenDimen.getWidth()/imageDimen.getWidth(); 
    float scaledHeight = imageDimen.getHeight() * widthRatio; 
    imageBmp = Bitmap.createScaledBitmap(bmp, (int)screenDimen.getWidth(), (int) scaledHeight, true); 

    //image.setImageBitmap(resized); 
    return imageBmp; 
} 

public class Dimensions { 
float width; 
float height; 

public Dimensions(float width, float height) { 
    this.width = width; 
    this.height = height; 
} 

public float getHeight() { 
    return height; 
} 

public void setHeight(float height) { 
    this.height = height; 
} 

public float getWidth() { 
    return width; 
} 

public void setWidth(float width) { 
    this.width = width; 
} 
    } 

    Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      int width = bitmap.getWidth(); // original width 
      int height = bitmap.getHeight(); // original heigh 
      Log.w(TAG, "onBitmapLoaded: " + width + " " + height); 

      Bitmap newBmp = makeCalc(getScreenDimensions(),new Dimensions(width,height),bitmap); 
      imageView.setImageBitmap(newBmp); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
      Log.w(TAG, "onBitmapFailed: "+errorDrawable); 
     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
      Log.w(TAG, "onPrepareLoad: "); 
     } 
    }; 

    Picasso.with(this).load(yourURL).into(target); 
    imageView.setTag(target); 

 Смежные вопросы

  • Нет связанных вопросов^_^