먼저 웹에서 사진을 보여주는 사용자 지정 구성 요소가 있습니다. 간단한 레이아웃이고 원 진행 바 및 ImageView가 포함됩니다. 기본 상태에서는 진행 표시 줄이 보이고 그림 다운로드 중에 표시되며 끝나면 진행 막대를 숨기고 ImageView에 그림을 표시합니다. 그것은 아주 잘 작동하지만 int 에뮬레이터와 HTC 영웅에 나는 오류가 발생했습니다. solution here을 찾았습니다. 하지만 내 문제는 그 TARGET_WIDTH 및 TARGET_HEIGHT 때로는 60x90, 때로는 fill_parent x fill_parent, 수정하지 않으며 디코딩 기능에서이 값을 계산할 수 없습니다. 예를 들어 나는 layout_width = "fill_parent"를 사용하는 XML에 내 시야를 추가 및 활동안드로이드 비트 맵 inSampleSize 다른 대상 크기로
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageLoader picture = (ImageLoader) findViewById(R.id.picture);
picture.load("http://winportal.net/images/galleries/wallpapers/Earth.jpg");
에서 사용하고 부하 방법에 내가 용액으로부터 디코드 함수를 호출하고 여기에 시도 크기 계산 :
...
this.onMeasure(0, 0);
Log.d("Log", "Layout width: " + this.getMeasuredWidth());
TARGET_WIDTH = this.getMeasuredWidth();
...
을 그것을 포함입니다 - - 24 bacause가 진행 막대의 폭을 가지고 왜 이해가 안
하지만, 레이아웃 fill_parent 폭 : "24 레이아웃 폭 :"
는 그 결과이다. 나는 onMeasure 메서드를 오버라이드했지만 0을 얻었습니다.
@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth, parentHeight);
}
overrideSizeChanged 역시 시도했습니다. 내 레이아웃 크기를 계산할 수있는 방법 디코드 :(
을 한 후, 그것은 좋은 값을 줄입니다하지만 나중에 실행하는 것