2012-04-18 96 views
0

我有相对布局,其中包含不同相对布局和视图的图层。在一个孩子相对布局我添加了图像的大小是2400 * 480,1600 * 480和920 * 480。现在我希望这些图像保持原始尺寸,但是当我将它们添加到相对布局时,它们会缩小以适应屏幕的宽度和高度,并且它们在缩小时也会保持宽高比。 下面是我的XML和添加ImageViews的代码。RelativeLayout宽度需要与其中最大的图像相同的宽度

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
     /* Some other layouts */ 
    <RelativeLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content"      
     android:id="@+id/parallaxLayers"   
     android:visibility="gone">  
    </RelativeLayout> 
    /* Viewgroup */  
</RelativeLayout> 

RelativeLayout parallaxLayout = (RelativeLayout)findViewById(R.id.parallaxLayers); 

private void addParallaxLayers() { 
     // TODO Auto-generated method stub 
     InputStream s1 = getResources().openRawResource(R.drawable.parallax_layer1); 
     InputStream s2 = getResources().openRawResource(R.drawable.parallax_layer2); 
     InputStream s3 = getResources().openRawResource(R.drawable.parallax_layer3); 
     InputStream s4 = getResources().openRawResource(R.drawable.parallax_layer4); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     System.gc(); 
     bitmap = bitmap(s1); 
     layer1Back = new ImageView(this);  
     layer1Back.setImageBitmap(bitmap); 
     parallaxLayout.addView(layer1Back, 0, lp); 
     try { 
      s1.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     bitmap = null; 
     s1 = null; 
     System.gc(); 

     bitmap = bitmap(s2); 
     layer2Back = new ImageView(this); 
     layer2Back.setImageBitmap(bitmap); 
     parallaxLayout.addView(layer2Back, 1, lp); 
     try { 
      s2.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     bitmap = null; 
     s2 = null; 
     System.gc(); 

     bitmap = bitmap(s3); 
     layer3Back = new ImageView(this); 
     layer3Back.setImageBitmap(bitmap); 
     parallaxLayout.addView(layer3Back, 2, lp); 
     try { 
      s3.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     bitmap = null; 
     s3 = null; 
     System.gc(); 

     bitmap = bitmap(s4); 
     layer4Back = new ImageView(this); 
     layer4Back.setImageBitmap(bitmap); 
     parallaxLayout.addView(layer4Back, 3, lp); 
     try { 
      s4.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     bitmap = null; 
     s4 = null; 
     System.gc(); 
    } 

如何使这些图像适合其原始大小,即使他们不得不调整相对布局?

+2

第一:这就是你一次加载的72兆位图数据。我认为这在很多设备上都会成为问题。第二:看看这个[问题](http://stackoverflow.com/questions/3813049/how-to-create-a-view-that-is-bigger-than-the-screen)如何有一个视图比屏幕大。 – Renard 2012-04-18 09:29:49

回答

0

我结束了使用Horizo​​ntalScrollView用的FrameLayout在彼此定位imageviews。

<HorizontalScrollView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:fadingEdge="none"> 
      <FrameLayout android:layout_width="wrap_content" 
       android:layout_height="fill_parent"     
       android:id="@+id/parallaxLayers"   
       android:visibility="gone">  
      </FrameLayout> 
     </HorizontalScrollView> 
0

尝试这条线为每个ImageView的:

layer2Back.setScaleType(ScaleType.FIT_XY); 

我不知道。

+0

不工作的家伙 – 2012-04-18 09:34:27

0

我觉得更像是:

layer2Back.setScaleType(ScaleType.FIT_CENTER); 
+0

不工作的家伙 – 2012-04-18 09:34:38