3

我已经尝试了自定义视图并将图像成功倾斜到 45 度,但我想以某个角度倾斜整个子布局,以便我在该子布局中添加的任何内容都会自动平铺.. 作为参考,请查看附图在此处输入图像描述

即使我已经尝试过这段代码,但它无济于事

public class CustomLinear extends LinearLayout{
private Matrix mForward = new Matrix();
private Matrix mReverse = new Matrix();
private float[] mTemp = new float[2];

public CustomLinear(Context context) {
super(context);
}

public CustomLinear(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void dispatchDraw(Canvas canvas) {

canvas.rotate(75, getWidth() / 2, getHeight() / 2);

mForward = canvas.getMatrix();
mForward.invert(mReverse);
canvas.save();
canvas.setMatrix(mForward); // This is the matrix we need to use for
                                        // proper positioning of touch events
super.dispatchDraw(canvas);
canvas.restore();
invalidate();
}

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
event.setLocation(getWidth() - event.getX(), getHeight() - event.getY());
return super.dispatchTouchEvent(event);
}

}
4

3 回答 3

1

制作自定义(倾斜/旋转)xml 视图并在主视图中调用它。

另外,请查看以下链接,这可能会对您有所帮助。

http://mindfreakconcepts.blogspot.com/2013/03/how-to-rotate-listview-items-in-android.html

于 2013-11-21T09:38:27.140 回答
1

我认为可以使用旋转动画。您可以在 On_create 中以0 持续时间在整个子布局上应用动画。

这是动画代码

<?xml version="1.0" encoding="utf-8"?>
    <rotate
     xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromDegrees="0"
        android:toDegrees="-90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="0"
        android:fillAfter="true">
    </rotate>

您可以根据需要设置旋转角度。

然后在 Activity 的 onCreate 中使用给定的代码,

  @Override
  public void onCreate(Bundle b) {
  super.onCreate(b);
     setContentView(R.layout.myscreen);
     Animation rotate_anim = AnimationUtils.loadAnimation(this, R.anim.rotation);
     LayoutAnimationController anim_controller = new LayoutAnimationController(rotate_anim, 0);
     FrameLayout layout = (FrameLayout)findViewById(R.id.MyScreen_ContentLayout);
     layout.setLayoutAnimation(anim_controller);
 }
于 2013-11-08T11:07:24.557 回答
0

我可能是错的,但据我了解,您必须使用动画来获得您想要的效果,而不是绘制。有一个类似的线程,在这里可能值得一试。

于 2013-11-08T08:40:32.320 回答