2014-04-28 3 views
0

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

Здесь я получить ширину и высоту экрана:

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 

здесь я создаю мой ImageView:

ImageView imageView = new ImageView(this); 
    imageView.setImageResource(icons[0]); 

и здесь я пытаюсь масштабировать свой ImageView:

imageView.getDrawable().setBounds(0, 0, width/5, height/6); 

Эта последняя часть является наклейкой. После ввода этого значения я не получаю ошибок и моя программа работает нормально - но изображение не масштабируется. В основном, что последняя строка кода, кажется, не имеет никакого эффекта, и я понятия не имею, почему, какие-то указатели?

Остальной мой код:

imageView.setAdjustViewBounds(true); 

    int mh = imageView.getDrawable().getIntrinsicHeight(); 
    int mw = imageView.getDrawable().getIntrinsicWidth(); 

    imageView.setX(width/2 - Math.round(width/5)); 
    imageView.setY(height/2 - Math.round(height/6) - mActionBarSize); 

    relativeLayout.addView(imageView); 
    setContentView(relativeLayout); 

ответ

0

Используйте этот

ImageView imgView = (ImageView) findViewById(R.id.pageImage); 
    imgView.getLayoutParams().height = 100; 
    imgView.getLayoutParams().width = 100; 
+0

моей программы сбой при попытке запустить это, вот мой код: imageView.setAdjustViewBounds (true); imageView.getLayoutParams(). Height = (int) Math.round (высота/6); imageView.getLayoutParams(). Width = (int) Math.round (width/5); imageView.requestLayout(); int mh = imageView.getDrawable(). GetIntrinsicHeight(); int mw = imageView.getDrawable(). GetIntrinsicWidth(); imageView.setX (ширина/2 - mw/2); imageView.setY (высота/2 - mh/2 - mActionBarSize); relativeLayout.addView (imageView); setContentView (relativeLayout); – user3488148

1

сделать это:

imageView.getLayoutParams().height = (int) Math.round(height/6); 
imageView.getLayoutParams().width = (int) Math.round(width/5); 
imageView.requestLayout(); // If you're setting the height/width after the layout has already been 'laid out' 

увидеть это link, чтобы узнать больше о requestLayout():

Назовите это, когда что-то изменилось, что нарушило макет этого представления. Это позволит запланировать прохождение макета дерева представлений.

Но Ususally вид зовут его автоматически, вам не придется заботиться о том, что ... (Так что для меня я использую его, чтобы заставить вид делать то, что я хочу сделать)

+0

Не могли бы вы объяснить эту последнюю часть? Например, почему вы использовали «image_view» вместо imageView? И что делает эта последняя часть? – user3488148

+0

Я ошибался в использовании «image_view», я только что обновил свой ответ. Я добавил некоторые сведения о View.requestLayout() –

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