Bonjour, j'ai un problème j'ai crée une vue personnalisée qui se dessine entièrement d'elle même mais sa méthode onDraw n'est jamais appelée
voilà ma classe
package com.example.launcher;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import com.example.launcher.PagedView.OnPageChangeListener;
/**
* TODO: document your custom view class.
*/
public class PageIndicator extends View implements OnPageChangeListener{
private static int GREY = 0x7dcccccc;
private static int WHITE = 0xffffff;
private int mCurrentPage;
private int mPageCount;
private Paint mPaint = new Paint();
private Rect mSize = new Rect(0,0,0,0);
private Rect mIndicatorRect = new Rect(0,0,0,0);
private int mWidth;
private int mHeight;
public PageIndicator(Context context) {
super(context);
init();
}
public PageIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public PageIndicator(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
}
@Override
public void onPageChange(int index) {
mCurrentPage = index;
if(mPageCount > 1)
mIndicatorRect.offsetTo(index*(mWidth/mPageCount), 0);
invalidate();
}
@Override
public void onPageCountChanged(int count) {
mPageCount = count;
if(mPageCount > 1)
mIndicatorRect.right = mIndicatorRect.left + mWidth/mPageCount;
else
mIndicatorRect.right = mWidth;
invalidate();
}
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
super.onSizeChanged(xNew, yNew, xOld, yOld);
mWidth = xNew;
mHeight = yNew;
mSize.bottom = mHeight;
mSize.right = mHeight;
mIndicatorRect.bottom = mHeight;
if(mPageCount > 1)
mIndicatorRect.right = mWidth/mPageCount;
else
mIndicatorRect.right = mWidth;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
final int width = MeasureSpec.getSize(widthMeasureSpec);
final int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
@Override
protected void onDraw(Canvas canvas)
{
mPaint.setColor(GREY);
canvas.drawRect(mSize, mPaint);
mPaint.setColor(WHITE);
canvas.drawRect(mIndicatorRect, mPaint);
}
}
Merci d'avance pour vos réponses
onDraw jamais appelé
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.