Вращение ImageView и его фон без урожая

Я много искал, но я не могу решить проблему. Я не могу использовать android:rotation как я хочу, чтобы это приложение было совместимо с Android API под версией 11. Моя проблема в чем-то похожа: Rotating view на 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

Попробуйте добавить ImageView в качестве дочернего представления FrameLayout и установить ширину и высоту FrameLayouts так же, как и для ImageView. Посмотрите мой аналогичный ответ здесь . Оригинальный ответ передан из сообщения Павла Вязовского. Надеюсь это поможет!