我一直在搜索,但我无法解决我的问题.我无法使用,android:rotation因为我希望此应用与11版本的Android API兼容.我的问题与此类似:在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();
}
Run Code Online (Sandbox Code Playgroud)
ImageView是RelativeLayout的一部分,我放置图像和一些文本.
但是图像在边缘被裁剪.我怎么能避免这种情况?
你只需要添加:
android:clipChildren="false"
Run Code Online (Sandbox Code Playgroud)
到了父母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>
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这在API Level 11之前提供了一个干净的解决方案
| 归档时间: |
|
| 查看次数: |
1579 次 |
| 最近记录: |