2013-04-25 34 views
-1

我的應用程序中有一個啓動屏幕imageview。我將png文件與我的應用程序綁定在一起,因爲png的分辨率更高,所以將其縮放後將其轉換爲位圖。當它正要繪製時,我正在使用imageview的回調函數進行修飾和縮放。我需要位圖來填滿整個屏幕。但有時它並沒有被繪製,它將視圖的寬度和高度設置爲0.它僅在某個時間發生。我認爲這不是正確的做法。請建議我最好的解決方案。在onCreate中將縮放位圖設置爲ImageView

<com.example.myImageView 
    android:id="@+id/ovation_background" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:contentDescription="@string/background_screen" 
    android:background="@color/black"/> 

在活動的onCreate功能:

mImageView.getMeasuredWidth()和mImageView.getMeasuredHeight()有時來爲0。

ViewTreeObserver vtoBackgroundView = mImageView.getViewTreeObserver(); 
vtoBackgroundView.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 

     @Override 
     public boolean onPreDraw() { 
      Bitmap bitmap = decodeSampledBitmapFromResource 
          (getResources(), R.drawable.launch_screen, 
          **mImageView.getMeasuredWidth()**, 
          **mImageView.getMeasuredHeight()**); 
      if (bitmap != null) 
      { 
       mImageView.setBackgroundBitmap(bitmap); 

      } 
      ViewTreeObserver obs2 = mImageView.getViewTreeObserver(); 
      obs2.removeOnPreDrawListener(this); 
      return true; 
     } 
    }); 

回答

1

如果你讓你的視圖的大小之前它實際上是在屏幕上繪製,你不getMeasuredWidth()和getMeasuredHeight()獲得圖像的大小適當,因爲機器人不知道你有多大基於真實的屏幕配置查看。你可能會考慮通過在onSizeChanged(int w,int h,int oldw,int oldh)中獲取實際的屏幕尺寸。

http://developer.android.com/reference/android/view/View.html#onSizeChanged(int, int, int, int)

該方法的第一個電話給你這樣的信息(視實際寬度,視實際高度,0,0)

所以前兩個參數是什麼,我想你想得到,在這種情況下,第二個參數你可以忽略。

+0

感謝您的回答。它給了正確的方向。 – Keerthi 2013-04-25 08:36:42

相關問題