Android 扩展线性布局不旋转
我正在尝试创建一个自定义的Android 扩展线性布局不旋转,android,layout,rotation,Android,Layout,Rotation,我正在尝试创建一个自定义的LinearLayout,它可以按设置的角度旋转布局中的所有子项。也就是说,我希望旋转整个画布和子对象,而不是单独旋转子对象 我需要支持API级别10,因此API级别11中引入的android:rotate在这里对我没有帮助 我一直在环顾四周,认为我需要按照下面这段代码的思路做一些事情,但是这段代码没有任何东西可以旋转 你知道我遗漏了什么吗 public class RotationLayout extends LinearLayout { public Ro
LinearLayout
,它可以按设置的角度旋转布局中的所有子项。也就是说,我希望旋转整个画布和子对象,而不是单独旋转子对象
我需要支持API级别10
,因此API级别11
中引入的android:rotate
在这里对我没有帮助
我一直在环顾四周,认为我需要按照下面这段代码的思路做一些事情,但是这段代码没有任何东西可以旋转
你知道我遗漏了什么吗
public class RotationLayout extends LinearLayout {
public RotationLayout(Context context) {
super(context);
init();
}
public RotationLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public RotationLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.rotate(350,0,0);
super.onDraw(canvas);
canvas.restore();
}
}`
我尝试了你的代码,做了一些修改 在activity类的onCreate(Bundle)中,我初始化了RotationLayout:
RotationLayout rl = new RotationLayout(this);
ImageView iv = new ImageView(this);
iv.setImageDrawable(getResources().getDrawable(R.drawable.some_drawable));
rl.addView(iv);
setContentView(rl);
事实上,该视图围绕(0,0)旋转了350度(或逆时针旋转10度)。这就是我所改变的:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.rotate(350,0,0);
}
从Canvas.save()上的注释中:
保存当前矩阵并将其剪辑到专用堆栈上。后来的
调用translate、scale、rotate、skew、concat或clipRect、clipPath将
所有操作都像往常一样,但是当对restore()的平衡调用
发出时,这些呼叫将被忘记,并且已存在的设置也将被忘记
将恢复save()之前
我尝试了你的代码,做了一些修改 在activity类的onCreate(Bundle)中,我初始化了RotationLayout:
RotationLayout rl = new RotationLayout(this);
ImageView iv = new ImageView(this);
iv.setImageDrawable(getResources().getDrawable(R.drawable.some_drawable));
rl.addView(iv);
setContentView(rl);
事实上,该视图围绕(0,0)旋转了350度(或逆时针旋转10度)。这就是我所改变的:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.rotate(350,0,0);
}
从Canvas.save()上的注释中:
保存当前矩阵并将其剪辑到专用堆栈上。后来的
调用translate、scale、rotate、skew、concat或clipRect、clipPath将
所有操作都像往常一样,但是当对restore()的平衡调用
发出时,这些呼叫将被忘记,并且已存在的设置也将被忘记
将恢复save()之前
您正在调用canvas.restore()?这不会撤销
canvas.rotate()
所做的吗?覆盖draw(canvas)而不是onDraw(canvas)尝试了你的两个建议,没有运气:-(你正在调用canvas.restore()
?这不会撤销canvas.rotate()
所做的吗?覆盖draw(canvas)而不是onDraw(canvas)尝试了你的两个建议,没有运气:-(非常感谢你的时间vikram,这正是我需要的!非常感谢你的时间vikram,这正是我需要的!