如何创建比屏幕大的视图?

是否可以创建比屏幕更大的视图?

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

有没有办法用android框架实现这个效果?

更新

我试图设置我的父布局比屏幕大得多,它正在工作。 这会使某些事情有点不舒服,但它可以奏效。 现在的下一个问题是我的布局仍然从屏幕的左侧开始。 我想不出一种方法可以让布局扩展到屏幕的左侧和右侧。

Solutions Collecting From Web of "如何创建比屏幕大的视图?"

好的,我得到了答案。 它不是很好,因为它使用了一个弃用的View类,但它至少可以在我当前的测试屏幕分辨率上工作,明天将测试其他分辨率。

我用这样的绝对布局包装了我想要扩展到屏幕之外的视图:

    

-200x坐标使视图棒200dip离开屏幕的左侧。 如果我正在为视图设置animation,那么屏幕外部的部分将逐渐变为可见。

例如设置负底边距和设置超大layout_height(足够大)可以解决类似的问题。

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

看起来像:

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

Horizo​​ntalScrollView:

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

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

如果有人仍然出现在这个页面上。 关键是你的根布局,它只适用于FrameLayout(或不推荐的absolutelayout)。 然后你有两个选项让你的孩子看得更大。

  1. 通过xml,这是快速而简单的,但你事先并不知道实际的屏幕宽度和高度,因此你可以设置一个非常高的layout_width和layout_height值来覆盖所有屏幕。
  2. 以编程方式计算屏幕尺寸,使视图的宽度/高度与此成比例。

另外请注意,您的较大视图仍然会从屏幕的左上角开始,因此为了说明这一点,您必须给出一个负的上下左边距,这是您添加到视图宽度/高度的一半

 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); 
 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方法的视图。 这会将您的视图尺寸设置为1000x1000px

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

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

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

    

您可以使用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文件是这样的:

   // Bla bla bla  

和:

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