Beispiel #1
0
        protected internal override void onDraw(android.graphics.Canvas canvas)
        {
            base.onDraw(canvas);
            // Draw the switch
            int switchLeft   = mSwitchLeft;
            int switchTop    = mSwitchTop;
            int switchRight  = mSwitchRight;
            int switchBottom = mSwitchBottom;

            mTrackDrawable.setBounds(switchLeft, switchTop, switchRight, switchBottom);
            mTrackDrawable.draw(canvas);
            canvas.save();
            mTrackDrawable.getPadding(mTempRect);
            int switchInnerLeft   = switchLeft + mTempRect.left;
            int switchInnerTop    = switchTop + mTempRect.top;
            int switchInnerRight  = switchRight - mTempRect.right;
            int switchInnerBottom = switchBottom - mTempRect.bottom;

            canvas.clipRect(switchInnerLeft, switchTop, switchInnerRight, switchBottom);
            mThumbDrawable.getPadding(mTempRect);
            int thumbPos   = (int)(mThumbPosition + 0.5f);
            int thumbLeft  = switchInnerLeft - mTempRect.left + thumbPos;
            int thumbRight = switchInnerLeft + thumbPos + mThumbWidth + mTempRect.right;

            mThumbDrawable.setBounds(thumbLeft, switchTop, thumbRight, switchBottom);
            mThumbDrawable.draw(canvas);
            // mTextColors should not be null, but just in case
            if (mTextColors != null)
            {
                mTextPaint.setColor(mTextColors.getColorForState(getDrawableState(), mTextColors.
                                                                 getDefaultColor()));
            }
            mTextPaint.drawableState = getDrawableState();
            android.text.Layout switchText = getTargetCheckedState() ? mOnLayout : mOffLayout;
            canvas.translate((thumbLeft + thumbRight) / 2 - switchText.getWidth() / 2, (switchInnerTop
                                                                                        + switchInnerBottom) / 2 - switchText.getHeight() / 2);
            switchText.draw(canvas);
            canvas.restore();
        }