动态创建的ImageView不会旋转

时间:2015-01-25 19:37:15

标签: android matrix imageview android-imageview

当我从xml加载ImageView并旋转时,它按预期工作 在课堂上创建ImageView时,它没有按预期工作。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_main);
    layout = (LinearLayout) findViewById(R.id.layout);
    //iv = ((ImageView)findViewById(R.id.image));

    iv = new ImageView(this);
    iv.setBackgroundResource(R.drawable.ic_launcher);
    layout.addView(iv);
    iv.setBackgroundResource(R.drawable.ic_launcher);
    iv.setAdjustViewBounds(true);
    iv.setImageMatrix(mMatrix);
    iv.setScaleType(ScaleType.MATRIX);
    rotateXform();
}

private void rotateXform() {
    if (isRotationOriginalValue) {
        mMatrix.postRotate((float) 180, centerX, centerY);
    } else {
        mMatrix.postRotate((float) -180, centerX, centerY);
    }
    isRotationOriginalValue = !isRotationOriginalValue;
    iv.setImageMatrix(mMatrix);
    iv.invalidate();
}

1 个答案:

答案 0 :(得分:0)

您没有设置图像,而是设置背景。

与任何其他视图一样,ImageView可以具有背景,该背景独立于图像本身。通常背景隐藏在图像后面,但如果设置填充或使用半透明图像,您将看到两者。

所以只需替换

iv.setBackgroundResource(R.drawable.ic_launcher);

iv.setImageResource(R.drawable.ic_launcher);

你会看到它旋转。