如何创build一个比屏幕更大的视图?

是否有可能创build一个比屏幕更大的视图?

我需要一个更宽的视图,然后设备的屏幕。 我在旋转animation中使用这个视图。 在旋转期间,在animation视图之前不在屏幕上的部分将变得可见。

有没有一种方法来实现与android框架的这种效果?

更新

我试图设置我的父母的布局比屏幕大得多,它正在工作。 这将使一些有点不舒服,但它可以工作。 接下来的问题是我的布局仍然在屏幕左侧开始。 我想不出一种方法来使布局自行扩展到屏幕的左侧和右侧。

Solutions Collecting From Web of "如何创build一个比屏幕更大的视图?"

好的,我得到了答案。 这不是很好,因为它使用了不推荐使用的View类,但它至less在我当前的testing屏幕上工作,其他分辨率将在明天进行testing。

我用这样的绝对布局包裹了我想要扩展到屏幕之外的观点:

 <AbsoluteLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentBottom="true"> <ImageView android:id="@+id/content" android:layout_width="600dip" android:layout_height="420dip" android:scaleType="centerCrop" android:layout_x="-200dip" android:layout_y="60dip" android:src="@color/testcolor" /> </AbsoluteLayout> 

-200 x坐标使得视图棒200dip不在屏幕的左侧。 如果我为视图制作animation,屏幕外的那些部分将逐渐变得可见。

例如,设置负底部边距以及设置特大的layout_height(足够大)解决了类似的问题。

至less使用API​​ 11+animation/旋转工作正常。

可能看起来像:

android:layout_marginBottom =“ – 1000dp”android:layout_height =“1000dp”

如果有人仍然在这个网页上。 关键是你的根布局,它只能使用一个FrameLayout(或不赞成的绝对布局)。 那么你有两个select,让你的孩子看起来更大。

  1. 通过xml,这是快速和容易的,但你不知道实际的屏幕宽度和高度,所以你为layout_width&layout_height设置一个可笑的高价值覆盖所有屏幕。
  2. 以编程方式计算屏幕大小,并使视图的宽度/高度与此成正比。

另外请注意,您的大视图仍然在屏幕的左上angular开始,所以为了说明这个问题,您必须给出一个负的顶部和左侧边距,这是您添加到视图宽度/高度的一半

 FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) viewToMakeBigger.getLayoutParams(); int marginLeft = (int) (viewToMakeBigger.getWidth()*0.1); int marginTop = (int) (viewToMakeBigger.getHeight()*0.1); params.width = (int) (viewToMakeBigger.getWidth()*1.2); params.height = (int) (viewToMakeBigger.getHeight()*1.2); params.leftMargin = -marginLeft; params.topMargin = -marginTop; viewToMakeBigger.setLayoutParams(params); 

Horizo​​ntalScrollView:

http://developer.android.com/reference/android/widget/Horizo​​ntalScrollView.html

用于可由用户滚动的视图层次结构的布局容器,允许其大于物理显示。

 Is it possible to create a view that is bigger then screen? 

为什么不,你可以用px (或dip )来定义Layout_Width和Layout_height,

 android:layout_width="10000px" android:layout_height="20000px" 

你需要通过getWindow()。setLayout来改变窗口的大小。 这将增加您的窗口的大小。 由于根布局可以像父级一样大,因此您可以增加视图的大小,使其大于屏幕大小。 它适用于我让我知道

您可以覆盖onMeasure方法的视图。 这会将您的视图尺寸设置为1000×1000像素

 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(1000, 1000); } 

您可以使用ViewSwitcher来处理。 用于AnimationOnGestureListener看起来不错。

你可以通过编程来完成

  FrameLayout.LayoutParams rootViewParams = (FrameLayout.LayoutParams) rootView.getLayoutParams(); rootViewParams.height=displayMetrics.heightPixels+(int)dpToPixels(60); rootViewParams.width=displayMetrics.widthPixels+(int)dpToPixels(60); rootView.setLayoutParams(rootViewParams); rootView.setX(rootView.getX() - dpToPixels(30)); rootView.setY(rootView.getY() - dpToPixels(30)); 

只能在“public void onWindowFocusChanged(boolean hasFocus)”方法中。

  rootView = (RelativeLayout) findViewById(R.id.rootLayout); 

里面的“protected void onCreate(Bundle savedInstanceState)”方法。

你的.xml文件是这样的:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rootLayout" tools:context="com.example.Activity"> <RelativeLayout android:layout_width="match_parent" android:layout_centerHorizontal="true" android:layout_margin="30dp" android:layout_centerVertical="true" android:layout_height="match_parent"> // Bla bla bla </RelativeLayout> 

和:

 public float dpToPixels(float dp) { return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); } 

下面的简单axml创build一个比屏幕宽400dp的ImageView(即使layout_width设置为等于父宽度),使用200dp的负左右边距。

ImageView位于屏幕上方250dp处,使用负顶部边距,在屏幕上可以看到450dp的700dp垂直像素。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:background="#FFFF0000" android:layout_height="700dp" android:layout_marginLeft="-200dp" android:layout_marginRight="-200dp" android:layout_marginTop="-250dp" android:layout_width="match_parent" /> </RelativeLayout>