使用CountDownTimer更改imageview大小

时间:2014-08-11 10:57:48

标签: android

我希望ImageView在活动开始时改变大小,但是我想让它改变顺畅并尝试使用计时器,但遇到了问题,所以代码看起来像这样:

@Override
protected void onResume() {
    super.onResume();


    tapImage = (ImageView) findViewById(R.id.tapObject);

    CountDownTimer start = new CountDownTimer(10000, 1000) {

        @Override
        public void onTick(long l) {
            imageWidth = imageWidth + 50;
            changeSize(imageWidth);
            int imageStats = tapImage.getWidth();
            Log.d("IMAGE", String.valueOf(imageStats));

        }

        @Override
        public void onFinish() {
            Log.d("done", "done");
        }
    }.start();
}

public void changeSize(int widthSize) {
    tapImage.getLayoutParams().width = widthSize;
}

<ImageView
    android:id="@+id/tapObject"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitCenter"
    android:src="@drawable/object"
    android:layout_centerVertical="true"
    android:onClick="checkTap"
    android:layout_centerHorizontal="true" />

问题是它只改变一次然后它不再在日志中改变我看到这样的图片:

D / IMAGE:150

D / IMAGE:150

D / IMAGE:150

D / IMAGE:150

D / IMAGE:150

D / IMAGE:150

D / done:完成。

请帮助:)

2 个答案:

答案 0 :(得分:0)

在changeSize()

中调用tapImage.requestLayoutParams()

答案 1 :(得分:0)

试试这个:

    public void onTick(long l) {
        imageWidth = imageWidth + 50;
        changeSize(imageWidth);
        tapImage.postInvalidate();
        int imageStats = tapImage.getWidth();
        Log.d("IMAGE", String.valueOf(imageStats));

    }