android.graphics.drawable.ShapeDrawable.ShaderFactory#android.graphics.LinearGradient源码实例Demo

下面列出了android.graphics.drawable.ShapeDrawable.ShaderFactory#android.graphics.LinearGradient 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Musicoco   文件: BarWavesView.java
private void drawWaves(Canvas canvas) {

        for (int i = 0; i < mWaveNumber; i++) {
            float left = mWaveWidth * i + mWaveInterval * i;
            float right = left + mWaveWidth;

            float bottom = getHeight() - mBarHeight;
            float fs = mWaveHeight[i];
            float top;
            top = bottom - mWaveMinHeight - (fs * mWaveRange);
            LinearGradient lg = new LinearGradient(
                    left, bottom,
                    right, top,
                    mWaveColors[i],
                    null,
                    Shader.TileMode.CLAMP
            );
            mPaint.setAlpha(255);
            mPaint.setShader(lg);
            canvas.drawRoundRect(left, top, right, bottom + 2, 20, 20, mPaint);
        }

    }
 
源代码2 项目: WidgetCase   文件: GradientLine.java
private void downLgMoreCofig(Canvas canvas){
    // 设置渐变曲线配置
    float y0 = control1.y;
    LinearGradient lg = new LinearGradient(mRadius * 2, y0, mView_W / 2, control2.y + DensityUtil.dp2px(2),
            Color.rgb(88, 181, 250), Color.rgb(101, 226, 175), Shader.TileMode.CLAMP);
    mPaint.setShader(lg);

    // 画虚线
    canvas.drawLine(mRadius + mPointPaint.getStrokeWidth(), mRadius * 2 + mPointPaint.getStrokeWidth(),
            mRadius + mPointPaint.getStrokeWidth(), mView_H - mRadius * 2 - mPointPaint.getStrokeWidth(), mImaPaint);

    // 画圆点
    mPointPaint.setShader(lg);
    canvas.drawCircle(mRadius + mPointPaint.getStrokeWidth(), control1.y, mRadius, mPointPaint);
    canvas.drawCircle(mView_W - mRadius - mPointPaint.getStrokeWidth(), control2.y, mRadius, mPointPaint);
}
 
源代码3 项目: InteractiveChart   文件: TimeLineDrawing.java
@Override public void onInit(CandleRender render, AbsChartModule chartModule) {
  super.onInit(render, chartModule);
  attribute = render.getAttribute();

  borderPaint.setStyle(Paint.Style.STROKE);
  borderPaint.setStrokeWidth(attribute.borderWidth);
  borderPaint.setColor(attribute.borderColor);

  timelinePaint.setStrokeWidth(attribute.timeLineWidth);
  timelinePaint.setColor(attribute.timeLineColor);
  timelinePaint.setStyle(Paint.Style.STROKE);

  timeShaderPaint.setShader(
      new LinearGradient(0, viewRect.top, 0, viewRect.bottom,
          new int[] { attribute.timeLineShaderColorBegin, attribute.timeLineShaderColorEnd },
          null, Shader.TileMode.REPEAT));

  space = (attribute.candleSpace / attribute.candleWidth) / 2;
}
 
源代码4 项目: thunderboard-android   文件: HueBackgroundView.java
@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    float width = getWidth();
    float height = getHeight();

    if (isEnabled()) {
        LinearGradient grad = new LinearGradient(height / 2, 0.0f,
                width - height / 2, 0.0f,
                spectrumColors, null, Shader.TileMode.CLAMP);
        brush.setShader(grad);
        canvas.drawRect(height / 2, (height - lineHeight) / 2,
                width - height / 2, (height + lineHeight) / 2,
                brush);
    }

}
 
源代码5 项目: zone-sdk   文件: VolumeView.java
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mWidth = getWidth();
    mRectHeight = getHeight();
    mRectWidth = (int) (mWidth * 0.6 / mRectCount);
    mLinearGradient = new LinearGradient(
            0,
            0,
            mRectWidth,
            mRectHeight,
            Color.YELLOW,
            Color.BLUE,
            Shader.TileMode.CLAMP);
    mPaint.setShader(mLinearGradient);
}
 
源代码6 项目: PhotoEdit   文件: ValueBar.java
/**
 * Set the bar color. <br>
 * <br>
 * Its discouraged to use this method.
 *
 * @param color
 */
public void setColor(int color) {
    int x1, y1;
    if(mOrientation == ORIENTATION_HORIZONTAL) {
        x1 = (mBarLength + mBarPointerHaloRadius);
        y1 = mBarThickness;
    }
    else {
        x1 = mBarThickness;
        y1 = (mBarLength + mBarPointerHaloRadius);
    }

    Color.colorToHSV(color, mHSVColor);
    shader = new LinearGradient(mBarPointerHaloRadius, 0,
            x1, y1, new int[] {
            color, Color.BLACK }, null, Shader.TileMode.CLAMP);
    mBarPaint.setShader(shader);
    calculateColor(mBarPointerPosition);
    mBarPointerPaint.setColor(mColor);
    if (mPicker != null) {
        mPicker.setNewCenterColor(mColor);
        if(mPicker.hasOpacityBar())
            mPicker.changeOpacityBarColor(mColor);
    }
    invalidate();
}
 
源代码7 项目: ViewPager   文件: ImageUtils.java
public static Bitmap getReverseBitmapById(Context context, int resId, float percent) {
    // get the source bitmap
    Bitmap srcBitmap=BitmapFactory.decodeResource(context.getResources(), resId);
    // get the tow third segment of the reverse bitmap
    Matrix matrix=new Matrix();
    matrix.setScale(1, -1);
    Bitmap rvsBitmap=Bitmap.createBitmap(srcBitmap, 0, (int) (srcBitmap.getHeight()*(1-percent)),
            srcBitmap.getWidth(), (int) (srcBitmap.getHeight()*percent), matrix, false);
    // combine the source bitmap and the reverse bitmap
    Bitmap comBitmap=Bitmap.createBitmap(srcBitmap.getWidth(),
            srcBitmap.getHeight()+rvsBitmap.getHeight()+20, srcBitmap.getConfig());
    Canvas gCanvas=new Canvas(comBitmap);
    gCanvas.drawBitmap(srcBitmap, 0, 0, null);
    gCanvas.drawBitmap(rvsBitmap, 0, srcBitmap.getHeight()+20, null);
    Paint paint=new Paint();
    LinearGradient shader=new LinearGradient(0, srcBitmap.getHeight()+20, 0, comBitmap.getHeight(),
            Color.BLACK, Color.TRANSPARENT, Shader.TileMode.CLAMP);
    paint.setShader(shader);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    gCanvas.drawRect(0, srcBitmap.getHeight()+20, srcBitmap.getWidth(), comBitmap.getHeight(), paint);
    return comBitmap;
}
 
源代码8 项目: Musync   文件: SyncPlayFragment.java
public Bitmap addGradient(Bitmap originalBitmap){

        int width = originalBitmap.getWidth();
        int height = originalBitmap.getHeight();
        Bitmap updatedBitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(updatedBitmap);
        canvas.drawBitmap(originalBitmap,0,0,null);
        Paint paint = new Paint();
        LinearGradient shader = new LinearGradient(0,0,0,height,getResources().getColor(R.color.colorAccent),getResources().getColor(R.color.colorAccent1), Shader.TileMode.CLAMP);
        paint.setShader(shader);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawRect(0,0,width,height,paint);

        return updatedBitmap;

    }
 
源代码9 项目: DanDanPlayForAndroid   文件: ScanWindowView.java
/**
 * 绘制扫描线
 */
private void drawLaserScanner(Canvas canvas) {
    paint.setColor(lineColor);
    //线性渐变
    LinearGradient linearGradient = new LinearGradient(
            0, scannerStart,
            0, scannerStart + SCANNER_LINE_HEIGHT,
            shadeColor(lineColor),
            lineColor,
            Shader.TileMode.MIRROR);

    paint.setShader(linearGradient);
    if (scannerStart <= scannerEnd) {
        //椭圆
        RectF rectF = new RectF(2 * SCANNER_LINE_HEIGHT, scannerStart, width - 2 * SCANNER_LINE_HEIGHT, scannerStart + SCANNER_LINE_HEIGHT);
        canvas.drawOval(rectF, paint);
        scannerStart += SCANNER_LINE_MOVE_DISTANCE;
    } else {
        scannerStart = 0;
    }
    paint.setShader(null);
}
 
源代码10 项目: GeometricWeather   文件: ArcProgress.java
private void ensureShadowShader() {
    shaderColors[0] = shaderColor;
    shaderColors[1] = Color.TRANSPARENT;

    if (shaderWrapper.isDifferent(
            getMeasuredWidth(), getMeasuredHeight(), false, shaderColors)) {
        shaderWrapper.setShader(
                new LinearGradient(
                        0, rectF.top,
                        0, rectF.bottom,
                        shaderColors[0], shaderColors[1],
                        Shader.TileMode.CLAMP
                ),
                getMeasuredWidth(), getMeasuredHeight(),
                false,
                shaderColors
        );
    }
}
 
源代码11 项目: AndroidDemo   文件: ReflectionActivity.java
private Bitmap createReflection(Bitmap original, float percentage, int gap) {

		final int reflectionHeight = (int) (original.getHeight() * percentage);
		Bitmap bitmapWithReflection = Bitmap.createBitmap(original.getWidth(), (original.getHeight() + reflectionHeight + gap), Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(bitmapWithReflection);

		// original image
		canvas.drawBitmap(original, 0, 0, null);
		// gap drawing
		final Paint transparentPaint = new Paint();
		transparentPaint.setARGB(0, 255, 255, 255);
		canvas.drawRect(0, original.getHeight(), original.getWidth(), original.getHeight() + gap, transparentPaint);
		// reflection
		final Matrix matrix = new Matrix();
		matrix.preScale(1, -1);
		canvas.drawBitmap(Bitmap.createBitmap(original, 0, original.getHeight() - reflectionHeight, original.getWidth(), reflectionHeight, matrix, false), 0, original.getHeight() + gap, null);
		// reflection shading
		final Paint fadePaint = new Paint();
		fadePaint.setShader(new LinearGradient(0, original.getHeight(), 0, original.getHeight() + reflectionHeight + gap, 0x70ffffff, 0x00ffffff, Shader.TileMode.CLAMP));
		fadePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
		canvas.drawRect(0, original.getHeight(), original.getWidth(), bitmapWithReflection.getHeight() + gap, fadePaint);

		original.recycle();
		return bitmapWithReflection;
	}
 
源代码12 项目: Ariana   文件: Ariana.java
public static Drawable drawable(final int[] colorBoxes, final float[] position, final GradientAngle gradientAngle) {
    ShapeDrawable.ShaderFactory shaderFactory = new ShapeDrawable.ShaderFactory() {
        @Override
        public Shader resize(int width, int height) {
            AngleCoordinate ac = AngleCoordinate.getAngleCoordinate(gradientAngle, width, height);
            LinearGradient linearGradient = new LinearGradient(ac.x1, ac.y1, ac.x2, ac.y2,
                    colorBoxes,
                    position,
                    Shader.TileMode.REPEAT);
            return linearGradient;
        }
    };
    PaintDrawable paint = new PaintDrawable();
    paint.setShape(new RectShape());
    paint.setShaderFactory(shaderFactory);
    return paint;
}
 
源代码13 项目: Musync   文件: SplashScreen.java
public Bitmap addGradient(Bitmap originalBitmap){

        int width = originalBitmap.getWidth();
        int height = originalBitmap.getHeight();
        Bitmap updatedBitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(updatedBitmap);
        canvas.drawBitmap(originalBitmap,0,0,null);
        Paint paint = new Paint();
        LinearGradient shader = new LinearGradient(0,0,0,height,getResources().getColor(R.color.colorAccent),getResources().getColor(R.color.colorAccent1), Shader.TileMode.CLAMP);
        paint.setShader(shader);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawRect(0,0,width,height,paint);

        return updatedBitmap;

    }
 
源代码14 项目: memoir   文件: OpacityBar.java
/**
 * Set the bar color. <br>
 * <br>
 * Its discouraged to use this method.
 *
 * @param color
 */
public void setColor(int color) {
    int x1, y1;
    if (mOrientation == ORIENTATION_HORIZONTAL) {
        x1 = (mBarLength + mBarPointerHaloRadius);
        y1 = mBarThickness;
    } else {
        x1 = mBarThickness;
        y1 = (mBarLength + mBarPointerHaloRadius);
    }

    Color.colorToHSV(color, mHSVColor);
    shader = new LinearGradient(mBarPointerHaloRadius, 0,
            x1, y1, new int[]{
            Color.HSVToColor(0x00, mHSVColor), color}, null,
            Shader.TileMode.CLAMP);
    mBarPaint.setShader(shader);
    calculateColor(mBarPointerPosition);
    mBarPointerPaint.setColor(mColor);
    if (mPicker != null) {
        mPicker.setNewCenterColor(mColor);
    }
    invalidate();
}
 
源代码15 项目: HoloColorPicker   文件: SVBar.java
/**
 * Set the bar color. <br>
 * <br>
 * Its discouraged to use this method.
 * 
 * @param color
 */
public void setColor(int color) {
	int x1, y1;
	if(mOrientation) {
		x1 = (mBarLength + mBarPointerHaloRadius);
		y1 = mBarThickness;
	}        else {
		x1 = mBarThickness;
		y1 = (mBarLength + mBarPointerHaloRadius);
	}
	
	Color.colorToHSV(color, mHSVColor);
	shader = new LinearGradient(mBarPointerHaloRadius, 0,
			x1, y1, new int[] {Color.WHITE, color, Color.BLACK}, null,
			Shader.TileMode.CLAMP);
	mBarPaint.setShader(shader);
    calculateColor(mBarPointerPosition);
	mBarPointerPaint.setColor(mColor);
	if (mPicker != null) {
		mPicker.setNewCenterColor(mColor);
		if(mPicker.hasOpacityBar())
			mPicker.changeOpacityBarColor(mColor);
	}
	invalidate();
}
 
源代码16 项目: spline   文件: HueDrawable.java
@Override
public void draw(Canvas canvas) {
    Rect b = getBounds();

    Paint huePaint = new Paint();
    huePaint.setShader(new LinearGradient(0, 0, b.width(), 0,
            new int[]{
                    0xFFFF0000,
                    0xFFFFFF00,
                    0xFF00FF00,
                    0xFF00FFFF,
                    0xFF0000FF,
                    0xFFFF00FF,
                    0xFFFF0000
            },
            null,
            Shader.TileMode.REPEAT)
    );
    canvas.drawRect(b, huePaint);
}
 
源代码17 项目: PhotoEdit   文件: SVBar.java
/**
 * Set the bar color. <br>
 * <br>
 * Its discouraged to use this method.
 *
 * @param color
 */
public void setColor(int color) {
    int x1, y1;
    if(mOrientation) {
        x1 = (mBarLength + mBarPointerHaloRadius);
        y1 = mBarThickness;
    }        else {
        x1 = mBarThickness;
        y1 = (mBarLength + mBarPointerHaloRadius);
    }

    Color.colorToHSV(color, mHSVColor);
    shader = new LinearGradient(mBarPointerHaloRadius, 0,
            x1, y1, new int[] {Color.WHITE, color, Color.BLACK}, null,
            Shader.TileMode.CLAMP);
    mBarPaint.setShader(shader);
    calculateColor(mBarPointerPosition);
    mBarPointerPaint.setColor(mColor);
    if (mPicker != null) {
        mPicker.setNewCenterColor(mColor);
        if(mPicker.hasOpacityBar())
            mPicker.changeOpacityBarColor(mColor);
    }
    invalidate();
}
 
源代码18 项目: mollyim-android   文件: VerticalSlideColorPicker.java
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  super.onSizeChanged(w, h, oldw, oldh);

  viewWidth  = w;
  viewHeight = h;

  if (viewWidth <= 0 || viewHeight <= 0) return;

  int barWidth = (int) (viewWidth * INDICATOR_TO_BAR_WIDTH_RATIO);

  centerX           = viewWidth / 2;
  indicatorRadius   = (viewWidth / 2) - borderWidth;
  colorPickerRadius = (barWidth / 2) - borderWidth;

  colorPickerBody   = new RectF(centerX - colorPickerRadius,
                                borderWidth + colorPickerRadius + indicatorRadius,
                                centerX + colorPickerRadius,
                                viewHeight - (borderWidth + colorPickerRadius + indicatorRadius));

  LinearGradient gradient = new LinearGradient(0, colorPickerBody.top, 0, colorPickerBody.bottom, colors, null, Shader.TileMode.CLAMP);
  paint.setShader(gradient);

  if (bitmap != null) {
    bitmap.recycle();
  }

  bitmap       = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
  bitmapCanvas = new Canvas(bitmap);
}
 
源代码19 项目: revolution-irc   文件: ColorPicker.java
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mSaturationGradient = new LinearGradient(getPaddingLeft(), 0,
            w - getPaddingRight(), 0,
            0xFFFFFFFF, 0x00FFFFFF, Shader.TileMode.CLAMP);
    mSaturationGradientPaint.setShader(mSaturationGradient);
    mValueGradient = new LinearGradient(0, getPaddingTop(), 0,
            h - getPaddingRight(),
            0x00000000, 0xFF000000, Shader.TileMode.CLAMP);
    mValueGradientPaint.setShader(mValueGradient);
}
 
源代码20 项目: Telegram   文件: PollVotesAlert.java
private void updatePlaceholder() {
    if (placeholderPaint == null) {
        return;
    }
    int color0 = Theme.getColor(Theme.key_dialogBackground);
    int color1 = Theme.getColor(Theme.key_dialogBackgroundGray);
    color0 = AndroidUtilities.getAverageColor(color1, color0);
    placeholderPaint.setColor(color1);
    placeholderGradient = new LinearGradient(0, 0, gradientWidth = AndroidUtilities.dp(500), 0, new int[]{color1, color0, color1}, new float[]{0.0f, 0.18f, 0.36f}, Shader.TileMode.REPEAT);
    placeholderPaint.setShader(placeholderGradient);
    placeholderMatrix = new Matrix();
    placeholderGradient.setLocalMatrix(placeholderMatrix);
}
 
源代码21 项目: XFrame   文件: XBitmapUtils.java
/**
 * 获得带倒影的Bitmap
 *
 * @param bitmap 源Bitmap
 * @return 带倒影的Bitmap
 */
public static Bitmap createReflectionBitmap(Bitmap bitmap) {
    final int reflectionGap = 4;
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();

    Matrix matrix = new Matrix();
    matrix.preScale(1, -1);

    Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,
            width, height / 2, matrix, false);

    Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
            (height + height / 2), Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmapWithReflection);
    canvas.drawBitmap(bitmap, 0, 0, null);
    Paint deafalutPaint = new Paint();
    canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);

    canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

    Paint paint = new Paint();
    LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
            bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
            0x00ffffff, TileMode.CLAMP);
    paint.setShader(shader);
    // Set the Transfer mode to be porter duff and destination in
    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
    // Draw a rectangle using the paint with our linear gradient
    canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
            + reflectionGap, paint);

    return bitmapWithReflection;
}
 
protected void initPainters() {
    if (showText) {
        textPaint = new TextPaint();
        textPaint.setColor(textColor);
        textPaint.setTextSize(textSize);
        textPaint.setAntiAlias(true);

        innerBottomTextPaint = new TextPaint();
        innerBottomTextPaint.setColor(innerBottomTextColor);
        innerBottomTextPaint.setTextSize(innerBottomTextSize);
        innerBottomTextPaint.setAntiAlias(true);
    }

    finishedPaint = new Paint();

    //finishedPaint.setShader(new SweepGradient(0, 0,  Color.BLUE, Color.YELLOW));
    if (gradientColorOne != 0 && gradientColorTwo != 0) {
        finishedPaint.setShader(new LinearGradient(0, 0, 0, getHeight(), gradientColorOne, gradientColorTwo, Shader.TileMode.MIRROR));
    } else {
        finishedPaint.setColor(finishedStrokeColor);
    }

    finishedPaint.setStyle(Paint.Style.STROKE);
    finishedPaint.setAntiAlias(true);
    finishedPaint.setStrokeWidth(finishedStrokeWidth);

    unfinishedPaint = new Paint();
    unfinishedPaint.setColor(unfinishedStrokeColor);
    unfinishedPaint.setStyle(Paint.Style.STROKE);
    unfinishedPaint.setAntiAlias(true);
    unfinishedPaint.setStrokeWidth(unfinishedStrokeWidth);

    innerCirclePaint = new Paint();
    innerCirclePaint.setColor(innerBackgroundColor);
    innerCirclePaint.setAntiAlias(true);

}
 
源代码23 项目: WidgetCase   文件: GradientLine.java
private void upLgMoreConfig(Canvas canvas){
    LinearGradient lg = new LinearGradient(mRadius * 2, control1.y, mView_W / 2, control2.y + DensityUtil.dp2px(2),
            Color.rgb(255, 196, 0), Color.rgb(255, 105, 83), Shader.TileMode.CLAMP);
    mPaint.setShader(lg);

    // 画虚线
    canvas.drawLine(mView_W - mRadius - mPointPaint.getStrokeWidth(), mRadius * 2 + mPointPaint.getStrokeWidth(),
            mView_W - mRadius - mPointPaint.getStrokeWidth(), mView_H - mRadius * 2 - mPointPaint.getStrokeWidth(), mImaPaint);

    // 画圆点
    mPointPaint.setShader(lg);
    canvas.drawCircle(mRadius + mPointPaint.getStrokeWidth(), mView_H - mRadius - mPointPaint.getStrokeWidth(), mRadius, mPointPaint);
    canvas.drawCircle(mView_W - mRadius - mPointPaint.getStrokeWidth(), control2.y + DensityUtil.dp2px(2), mRadius, mPointPaint);
}
 
源代码24 项目: WidgetCase   文件: SectionProBar.java
/**
 * 绘制进度条背景
 *
 * @param canvas
 * @param reachedEndX
 */
private void drawProgressBg(Canvas canvas, float reachedEndX) {
    mBgPaint.setStrokeWidth(mUnReachedHeight);
    if (mBgGradientColor == null) { // 默认
        mBgPaint.setColor(mUnReachedColor);
        canvas.drawLine(0, 0, mMaxUnReachedEndX, 0, mBgPaint);
    } else { // 渐变
        mBgPaint.setShader(new LinearGradient(mMaxUnReachedEndX - reachedEndX, 0, mMaxUnReachedEndX, 0,
                mBgGradientColor.getStartColor(), mBgGradientColor.getEndColor(),
                Shader.TileMode.CLAMP));
        canvas.drawLine(0, 0, mMaxUnReachedEndX, 0, mBgPaint);
    }
}
 
源代码25 项目: Oblique   文件: Config.java
public Shader getLinearGradient(GradientAngle gradientAngle, float width, float height) {
    float x1 = 0, x2 = 0, y1 = 0, y2 = 0;
    switch (gradientAngle) {
        case LEFT_TO_RIGHT:
            x2 = width;
            break;
        case RIGHT_TO_LEFT:
            x1 = width;
            break;
        case TOP_TO_BOTTOM:
            y2 = height;
            break;
        case BOTTOM_TO_TOP:
            y1 = height;
            break;
        case LEFT_TOP_TO_RIGHT_BOTTOM:
            x2 = width;
            y2 = height;
            break;
        case RIGHT_BOTTOM_TO_LEFT_TOP:
            x1 = width;
            y1 = height;
            break;
        case LEFT_BOTTOM_TO_RIGHT_TOP:
            x2 = width;
            y1 = height;
            break;
        case RIGHT_TOP_TO_LEFT_BOTTOM:
            x1 = width;
            y2 = height;
            break;
    }
    return new LinearGradient(x1, y1, x2, y2, startColor, endColor, Shader.TileMode.CLAMP);
}
 
源代码26 项目: xDrip   文件: BIGChart.java
protected void updateRainbow() {
    animationAngle = (animationAngle + 1) % 360;
    //Animation matrix:
    int[] rainbow = {Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE
            , Color.CYAN};
    Shader shader = new LinearGradient(0, 0, 0, 20, rainbow,
            null, Shader.TileMode.MIRROR);
    Matrix matrix = new Matrix();
    matrix.setRotate(animationAngle);
    shader.setLocalMatrix(matrix);
    mSgv.getPaint().setShader(shader);
    invalidate();
}
 
源代码27 项目: Android-Keyboard   文件: RGBKeyboardRender.java
private void drawBackground(Canvas canvas) {
    final long currentTime = System.currentTimeMillis();
    final int width = canvas.getWidth();
    final int height = canvas.getHeight();

    // first time
    if (mLastDrawCanvasTime == 0L) {
        mLastDrawCanvasTime = currentTime;
    }

    // update delta pixel
    final long deltaTime = currentTime - mLastDrawCanvasTime;
    if (deltaTime >= FPS) {
        mLastDrawCanvasTime = currentTime;
        final float addedDeltaPixel = VELOCITY * deltaTime;
        mDeltaPixel += addedDeltaPixel;

        float pathLength = height;
        if (mDeltaPixel > pathLength) {
            mDeltaPixel %= pathLength;
        }
    }
    // draw
    LinearGradient linearGradient = new LinearGradient(
            0 - mDeltaPixel, -mDeltaPixel,
            height - mDeltaPixel, height - mDeltaPixel,
            COLORS,
            POSITIONS,
            Shader.TileMode.REPEAT);

    mRgbPaint.setShader(linearGradient);
    canvasRect.left = 0;
    canvasRect.top = 0;
    canvasRect.right = width;
    canvasRect.bottom = height;
    canvas.drawRect(canvasRect, mRgbPaint);
}
 
源代码28 项目: CodenameOne   文件: AndroidAsyncView.java
AsyncPaintPosition createGradientPaint(Style s) {
    final Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setAntiAlias(true);
    paint.setAlpha(255);
    final byte bgType = s.getBackgroundType();
    final int startColor = s.getBackgroundGradientStartColor();
    final int endColor = s.getBackgroundGradientEndColor();
    
    AsyncPaintPosition ap = new AsyncPaintPosition(clip, clipP, clipIsPath) {
        int lastHeight;
        int lastWidth;
        @Override
        public void executeImpl(AndroidGraphics underlying) {
            if(width != lastWidth || height != lastHeight) {
                lastWidth = width;
                lastHeight = height;
                switch(bgType) {
                    case Style.BACKGROUND_GRADIENT_LINEAR_VERTICAL:
                        paint.setShader(new LinearGradient(0, 0, 0, height, startColor, endColor, Shader.TileMode.MIRROR));
                        break;
                    case Style.BACKGROUND_GRADIENT_LINEAR_HORIZONTAL:
                        paint.setShader(new LinearGradient(0, 0, width, 0, startColor, endColor, Shader.TileMode.MIRROR));
                        break;
                    case Style.BACKGROUND_GRADIENT_RADIAL:
                        paint.setShader(new RadialGradient(x, y, Math.max(width, height), startColor, endColor, Shader.TileMode.MIRROR));
                        break;
                }
                underlying.canvas.drawRect(x, y, x + width, y + height, paint);
            }
        }
        public String toString() {
            return "GradientPaint";
        }
    };
    return ap;
}
 
源代码29 项目: Folivora   文件: UmbrellaDrawable.java
private void createShader() {
  Rect bounds = getBounds();
  if (bounds.isEmpty()) return;
  final int radius = Math.max(bounds.width(), bounds.height()) / 2;
  mShader1 = new LinearGradient(0, 0, radius, 0, mColor1, mBackgroundColor, Shader.TileMode.CLAMP);
  mShader2 = new LinearGradient(0, 0, radius, 0, mColor2, mBackgroundColor, Shader.TileMode.CLAMP);
}
 
源代码30 项目: TvLauncher   文件: ReflectView.java
public static Bitmap createCutReflectedImage(Bitmap bitmap, int cutHeight) {
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    int totalHeight = mReflectImageHeight + cutHeight;
    if (height <= totalHeight) {
        return null;
    }
    Matrix matrix = new Matrix();
    matrix.preScale(1, -1);
    Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height
                    - mReflectImageHeight - cutHeight, width, mReflectImageHeight,
            matrix, true);
    Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
            mReflectImageHeight, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmapWithReflection);
    canvas.drawBitmap(reflectionImage, 0, 0, null);
    LinearGradient shader = new LinearGradient(0, 0, 0,
            bitmapWithReflection.getHeight(), 0x80ffffff, 0x00ffffff,
            TileMode.CLAMP);
    Paint paint = new Paint();
    paint.setShader(shader);
    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
    canvas.drawRect(0, 0, width, bitmapWithReflection.getHeight(), paint);
    if (!reflectionImage.isRecycled()) {
        reflectionImage.recycle();
    }
    System.gc();

    return bitmapWithReflection;
}