在景观模式中观看肖像

时间:2012-05-30 12:16:15

标签: android view canvas rotation

我在横向模式中有一个活动。里面有一个Custom-Title-View对齐如下:

Current View

是否可以将横向模式和'假'这一个视图转换为纵向模式,如下所示: desired View

我试图覆盖我的自定义TitleView并将这样的内容添加到draw(Canvas)

 public class VerticalTitle extends Title{

      public draw(Canvas){
           canvas.save();
           canvas.rotate(getWidth() / 2, getHeight() / 2);
           // i tryed many translations, but get none to work
           canvas.translate(0, getHeight());
           super.draw(canvas);
           canvas.restore()
      }

      public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
           super.onMeasure(heightMeasureSpec, widthMeasureSpec);
           setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
      }
}

如果它有任何兴趣,TitleBar从RelativeLayout延伸并具有固定的高度和fill_parent宽度

View中的setRotate参数不是一个选项,因为该应用应与2.2保持兼容。

2 个答案:

答案 0 :(得分:1)

我从来没有这样做,但是我在这里找到了另外两个答案,表明你可以做到这一点。

第一个涉及扩展TextView类,并且是here。既然你想要做一个完整的视图,我认为下一个答案更适合你的情况。

另一个答案是使用旋转来创建动画来处理它。答案是here

答案 1 :(得分:1)

您必须扩展文本视图并构建自定义垂直TextView首先请参阅这两个链接以获取更多详细信息

  1. Vertical TextView
  2. Vertical rotated label
  3. 然后在你的Layout-land中你可以使用这个Xml文件进行布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <com.yourpackage.CustomVerticalTextView
            android:layout_width="42dp"
            android:layout_height="fill_parent"
            android:text="@string/hello"
            android:background="#0000FF" />
    
    </LinearLayout>
    

    如果要旋转布局而不是将其所有子项旋转90度使用  LayoutAnimationController

    有关详细信息,请参阅此SO thread