自定义ImageView是方形的

时间:2014-04-29 20:58:50

标签: android android-listview android-imageview

我试图将imageview的高度和宽度设置为屏幕的宽度(Square)。 imageview位于列表视图中。我尝试在baseadapter的getview方法中设置高度和宽度。发生的事情是滚动变得非常慢。所以我试图做的是通过扩展ImageView类来编写我自己的imageview,这样它将被绘制到正确的大小,所以我不需要在getview方法中更改它。这仍然没有改变任何事情。滚动仍然很慢。如何设置imageview的宽度和高度以匹配屏幕宽度?

     public class ScaledImageView  extends ImageView{

public ScaledImageView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public ScaledImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}

public ScaledImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}


      @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

   // int width = getMeasuredWidth();



    setMeasuredDimension(resolveSize(this.getMeasuredWidth(), widthMeasureSpec),      resolveSize(this.getMeasuredWidth(), widthMeasureSpec));

}

}

1 个答案:

答案 0 :(得分:0)

@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec)
{
    final int width = getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec);
    if(width>this.squareWidth)
    {
        this.squareWidth = width;
    }
    setMeasuredDimension(this.squareWidth, this.squareWidth);
}

请参阅here上的完整示例。

您还可以查看我的适配器,了解我是如何实现这一性能的。我猜你也可能在getView()中实例化新的视图。

如果它仍然很慢,我需要看看你的适配器(请同时提一下你的图像的二进制大小)。另外请看我的例子,它甚至超快速地将图像拉过电线并重新调整/调整尺寸。