我已经进行了很多搜索,但是无法为我的问题找到解决方案。我无法使用android:rotation
,因为我希望该应用与11版以下的Android API兼容。
我的问题是这样的:Rotating a view in Android
我已经做到了:
@Override
public void draw(Canvas canvas) {
canvas.save();
Drawable d = getDrawable();
canvas.rotate(-10, d.getIntrinsicWidth() / 2, d.getIntrinsicHeight() / 2);
super.draw(canvas);
canvas.restore();
}
ImageView是RelativeLayout的一部分,在其中放置了图像和一些文本。
但是图像在边缘被裁剪。我该如何避免呢?
最佳答案
您只需添加:
android:clipChildren="false"
到父
ViewGroup
。例如:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:clipChildren="false">
<com.yourcompany.views.RotateImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/white"
android:src="@drawable/ic_launcher" />
</FrameLayout>
RotateImageView:
public class RotateImageView extends ImageView {
@Override
public void draw(Canvas canvas) {
canvas.save();
int height = canvas.getHeight();
int width = canvas.getWidth();
canvas.rotate(45, height / 2, width / 2);
super.draw(canvas);
canvas.restore();
}
}
在API级别11之前提供了一个干净的解决方案