アプリケーションに起動画面のイメージビューがあります。png の方が解像度が高いため、アプリケーションにバンドルされている png ファイルをスケーリングした後、ビットマップに変換しています。描画しようとしているときに、そのイメージビューのコールバック関数でデコと縮小を行っています。画面全体を埋めるビットマップが必要です。しかし、ビューの幅と高さが 0 になっているため、描画されないことがあります。これは正しいやり方ではないと思います。最善の解決策を提案してください。
<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;
}
});