如何以编程方式旋转ImageView,而不仅仅是图像

时间:2014-10-21 21:14:04

标签: android rotation android-animation android-imageview

我需要使用动画旋转ImageView,这样ImageView的宽度和高度也会发生变化。

我尝试过使用View.animate使用ViewPropertyAnimator,但这只是旋转图像,而不是实际的视图本身。

我需要使用它,这样我可以在旋转后计算视图的x和y坐标,以及它的宽度和高度。

我制作了一个测试应用程序,只是旋转卡片图像,我拍摄的照片布局可见,以显示我的意思。

正如您在代码中看到的那样,我还试图在动画结束后强制更改runnable中的宽度和高度,但这并不起作用。也没有使用scaleX / scaleY来尝试改变事物。

Before rotation

After rotation

public class MyActivity extends Activity implements View.OnClickListener{

RelativeLayout temp;

ImageView card;
int rotation = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    card = (ImageView) findViewById(R.id.card);
    card.setOnClickListener(this);
}

@Override
public void onClick(final View v) {


    final Runnable e1 = new Runnable() {
        public void run() {
            Toast.makeText(MyActivity.this, "After1 w="+v.getMeasuredWidth()+" h="+v.getMeasuredHeight(), Toast.LENGTH_SHORT).show();
            int w = v.getMeasuredWidth();
            int h = v.getMeasuredHeight();
            v.getLayoutParams().width = h;
            v.getLayoutParams().height = w;
            v.setLayoutParams(v.getLayoutParams());
            Toast.makeText(MyActivity.this, "After2 w="+v.getMeasuredWidth()+" h="+v.getMeasuredHeight(), Toast.LENGTH_SHORT).show();

        }
    };

    int[] cardCoords = new int[2];
    v.getLocationOnScreen(cardCoords);
    Toast.makeText(MyActivity.this, "x="+cardCoords[0]+" y="+cardCoords[1], Toast.LENGTH_SHORT).show();
    Toast.makeText(this, "Before w="+v.getMeasuredWidth()+" h="+v.getMeasuredHeight(), Toast.LENGTH_SHORT).show();
    rotation = rotation + 90;

    v.animate().
            setDuration(1000).
            rotationBy(90);
            //scaleX((float) v.getMeasuredHeight() / (float) v.getMeasuredWidth()).
            //scaleY((float) v.getMeasuredHeight() / (float) v.getMeasuredWidth()).
            //.withEndAction(e1);

}

}

1 个答案:

答案 0 :(得分:0)

您应该寻找旋转视图,而不是图像。

Rotating a view in Android