Partage
  • Partager sur Facebook
  • Partager sur Twitter

onDraw jamais appelé

    25 février 2013 à 13:52:07

    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

    • Partager sur Facebook
    • Partager sur Twitter

    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.
    • Editeur
    • Markdown