Я расширяю ImageView для того, чтобы вручную масштабировать изображение в представлении.Я хочу масштабировать изображение, чтобы заполнить ширину пользовательского вида, а затем нарисовать его на холсте, однако я не могу получить ширину вида, используя this.getWidth()
. Он просто возвращает 0, так как вид еще не былнарисован и имеет размеры 0 на 0.
В настоящее время у меня в main.xml есть следующее:
<com.android.myapp.BackgroundView
android:id="@+id/background_view"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/background"
android:dither="true"
/>
Пользовательский класс выглядит следующим образом:
public class BackgroundView extends ImageView {
private Paint paint;
private Bitmap background;
public BackgroundView(Context context) {
super(context);
paint = new Paint();
loadBitmap();
}
public BackgroundView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
loadBitmap();
}
public void loadBitmap() {
BitmapDrawable src = (BitmapDrawable) this.getDrawable();
background = src.getBitmap();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(background, 0, 0, paint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
Мой класс Main.java:
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Я не могу использовать
Bitmap.createScaledBitmap(background, view.getWidth(), view.getHeight(), false)
, так как представление еще не нарисовано, как бы мне было масштабировать изображение дозаполнить вид / ширину экрана на данный момент?
Заранее спасибо.