J'étend ImageView afin de mettre à l'échelle manuellement une image dans la vue. Je veux redimensionner une image pour remplir la largeur de la vue personnalisée, puis dessiner sur le canevas, cependant, je suis incapable d'obtenir la largeur de vue en utilisant this.getWidth()
Il renvoie juste 0, car la vue n'a pas encore été dessinée et a donc des dimensions 0 par 0.Mettre à l'échelle l'image dans la vue personnalisée ImageView
Actuellement, je donne les résultats suivants dans mon 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"
/>
la classe personnalisée est la suivante:
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);
}
}
ma classe est Main.java :
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Je ne peux pas utiliser
Bitmap.createScaledBitmap(background, view.getWidth(), view.getHeight(), false)
que la vue n'a pas encore été établi, comment pourrais-je aller sur l'échelle de l'image pour remplir la largeur de vue/écran à ce moment?
Merci d'avance.