如何将imageview图像缩放到特定大小?

时间:2014-04-28 09:13:45

标签: android imageview scale setbounds

我创建了一个imageview图像,但我希望将其缩放到不超过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);

2 个答案:

答案 0 :(得分: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()的更多信息:

当某些内容发生变化而导致此视图的布局无效时,请调用此方法。这将安排视图树的布局传递。

但通常情况下,这种观点是自动调用它,你不必关心它......(所以对我来说,我用它来迫使视图做我想做的事情)

答案 1 :(得分:0)

使用此

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