public HeaderShadowDecoration(View view, boolean scrollsHorizontally, float parallax, float shadowSize, int columns) {
mView = view;
mHorizontal = scrollsHorizontally;
mParallax = parallax;
mShadowSize = shadowSize;
mColumns = columns;
if (mShadowSize > 0) {
mShadowPaint = new Paint();
mShadowPaint.setShader(mHorizontal ?
new LinearGradient(mShadowSize, 0, 0, 0,
new int[]{Color.argb(55, 0, 0, 0), Color.argb(55, 0, 0, 0), Color.argb(3, 0, 0, 0)},
new float[]{0f, .5f, 1f},
Shader.TileMode.CLAMP) :
new LinearGradient(0, mShadowSize, 0, 0,
new int[]{Color.argb(55, 0, 0, 0), Color.argb(55, 0, 0, 0), Color.argb(3, 0, 0, 0)},
new float[]{0f, .5f, 1f},
Shader.TileMode.CLAMP));
} else {
mShadowPaint = null;
}
}
java类android.graphics.LinearGradient的实例源码
HeaderShadowDecoration.java 文件源码
项目:GitHub
阅读 57
收藏 0
点赞 0
评论 0
AnalyzerSurface.java 文件源码
项目:AndroidSdrRtlTuner
阅读 40
收藏 0
点赞 0
评论 0
/**
* SurfaceHolder.Callback function. This is called every time the dimension changes
* (and after the SurfaceView is created).
*
* @param holder reference to the surface holder
* @param format
* @param width current width of the surface view
* @param height current height of the surface view
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if(this.width != width || this.height != height) {
this.width = width;
this.height = height;
// Recreate the shaders:
this.fftPaint.setShader(new LinearGradient(0, 0, 0, getFftHeight(), Color.WHITE, Color.parseColor(fftColor), Shader.TileMode.MIRROR));
// Recreate the waterfall bitmaps:
this.createWaterfallLineBitmaps();
// Fix the text size of the text paint objects:
this.setFontSize(fontSize);
}
}
nicoTextView.java 文件源码
项目:stynico
阅读 40
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
if (mViewWidth == 0)
{
mViewWidth = getMeasuredWidth();
if (mViewWidth > 0)
{
mPaint = getPaint();
mLinearGradient = new LinearGradient(-mViewWidth, 0, 0, 0,new int[] { 0x45B3B5, 0x45B3B5, 0x33ffffff },new float[] { 0, 0.5f, 1 }, Shader.TileMode.CLAMP);
mPaint.setShader(mLinearGradient);
mGradientMatrix = new Matrix();
}
}
}
SProgress.java 文件源码
项目:JSSample
阅读 43
收藏 0
点赞 0
评论 0
private void init() {
setLayerType(LAYER_TYPE_SOFTWARE,null);
bgpaint = new Paint();
bgpaint.setColor(backColor);
bgpaint.setAntiAlias(true);
proPaint = new Paint();
proPaint.setColor(progressColor);
LinearGradient linearGradient = new LinearGradient(0, 0, width, height, progressColor, progressendcolor, Shader.TileMode.CLAMP);
proPaint.setShader(linearGradient);
proPaint.setAntiAlias(true);
textPaint = new Paint();
textPaint.setColor(textColor);
textPaint.setAntiAlias(true);
textPaint.setTextSize(textsize);
textbaseline = getFontstart(textPaint);
rectbg = new RectF();
rectprogress = new RectF();
}
VerticalSlideColorPicker.java 文件源码
项目:PeSanKita-android
阅读 47
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
viewWidth = w;
viewHeight = h;
centerX = viewWidth / 2;
colorPickerRadius = (viewWidth / 2) - borderWidth;
colorPickerBody = new RectF(centerX - colorPickerRadius, borderWidth + colorPickerRadius, centerX + colorPickerRadius, viewHeight - (borderWidth + colorPickerRadius));
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);
resetToDefault();
}
VoiceWaveViewTV.java 文件源码
项目:WaveAudioVizualization
阅读 39
收藏 0
点赞 0
评论 0
@Override // will be called on UI thread
public void onSurfaceTextureAvailable(SurfaceTexture st, int width, int height) {
Log.d(TAG, "onSurfaceTextureAvailable(" + width + "x" + height + ")");
mWidth = width;
mHeight = height;
mMaxAmpl = height / 2;
mPaints.get(0).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#CA67B7"), Color.parseColor("#C081C1"), Shader.TileMode.MIRROR));
mPaints.get(0).setStrokeWidth(ScreenUtils.dp2px(getContext(), 2));
mPaints.get(1).setColor(Color.parseColor("#D5E3FA"));
mPaints.get(1).setStrokeWidth(ScreenUtils.dp2px(getContext(), 2));
mPaints.get(2).setStrokeWidth(ScreenUtils.dp2px(getContext(), 1));
mPaints.get(3).setStrokeWidth(ScreenUtils.dp2px(getContext(), 1));
mPaints.get(2).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#E67EA5"), Color.parseColor("#7F7AE1"), Shader.TileMode.MIRROR));
mPaints.get(3).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#E67EA5"), Color.parseColor("#7F7AE1"), Shader.TileMode.MIRROR));
synchronized (mLock) {
mSurfaceTexture = st;
mLock.notify();
}
}
ColorPicker.java 文件源码
项目:planetcon
阅读 38
收藏 0
点赞 0
评论 0
private void drawColorSquare(Canvas canvas) {
int pureColor, brightColor, darkColor, transparentColor;
// pureColor
mHSV[0] = mColorHSV[0];
mHSV[1] = 1; mHSV[2] = 1;
pureColor = Color.HSVToColor(mHSV);
// brightColor
mHSV[1] = 0; mHSV[2] = 1;
brightColor = Color.HSVToColor(mHSV);
// darkColor
mHSV[1] = 1; mHSV[2] = 0;
darkColor = Color.HSVToColor(255, mHSV);
// alphaColor
mHSV[1] = 0; mHSV[2] = 0;
transparentColor = Color.HSVToColor(0, mHSV);
// drawn without compose shader, but looks worse
Shader gradient1 = new LinearGradient(mSquareRect.right, mSquareRect.bottom, mSquareRect.right, mSquareRect.top, brightColor, pureColor, TileMode.CLAMP);
Shader gradient2 = new LinearGradient(mSquareRect.right, mSquareRect.bottom, mSquareRect.left, mSquareRect.bottom, transparentColor, darkColor, TileMode.CLAMP);
mColorPaint.setShader(gradient1);
canvas.drawRect(mSquareRect, mColorPaint);
mColorPaint.setShader(gradient2);
canvas.drawRect(mSquareRect, mColorPaint);
}
GradientShaderTextView.java 文件源码
项目:MainCalendar
阅读 42
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(int w, int h, int oldW, int oldH) {
super.onSizeChanged(w, h, oldW, oldH);
if (mViewWidth == 0) {
mViewWidth = getMeasuredWidth();
if (mViewWidth > 0) {
Paint paint = getPaint();
String text = getText().toString();
mTextWidth = paint.measureText(text);
int size = (int)paint.measureText(text);
int startX = (mViewWidth - size) / 2;
mLinearGradient = new LinearGradient(startX + 1, 0, 0, 0,
new int[] { 0x90ffffff, 0xffffffff, 0x90ffffff },
new float[] { 0, 0.5f, 1 }, Shader.TileMode.CLAMP); //边缘融合
paint.setShader(mLinearGradient);
mGradientMatrix = new Matrix();
}
}
}
FadingShadow.java 文件源码
项目:chromium-for-android-56-debug-video
阅读 36
收藏 0
点赞 0
评论 0
/**
* @param shadowColor The color of the shadow, e.g. 0x11000000.
*/
public FadingShadow(int shadowColor) {
final int n = SMOOTH_ALGORITHM_INTERPOLATION_POINTS_NUM;
float[] positions = new float[n];
int[] colors = new int[n];
int transparentShadowColor = shadowColor & 0x00FFFFFF;
int shadowAlpha = Color.alpha(shadowColor);
// Piece-wise linear interpolation of the smooth cubic function below.
for (int i = 0; i < n; ++i) {
float x = (float) i / (n - 1);
// Polynomial computation by Estrin's scheme.
float value = (1.0f - 2.2f * x) + (1.8f - 0.6f * x) * (x * x);
positions[i] = x;
colors[i] = (Math.round(shadowAlpha * value) << 24) | transparentShadowColor;
}
mShadowShader = new LinearGradient(0, 0, 0, 1, colors, positions, Shader.TileMode.CLAMP);
}
SaturationBar.java 文件源码
项目:microMathematics
阅读 31
收藏 0
点赞 0
评论 0
/**
* 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.WHITE, color }, null, Shader.TileMode.CLAMP);
mBarPaint.setShader(shader);
calculateColor(mBarPointerPosition);
mBarPointerPaint.setColor(mColor);
if (mPicker != null) {
mPicker.setNewCenterColor(mColor);
if (mPicker.hasValueBar())
mPicker.changeValueBarColor(mColor);
else if (mPicker.hasOpacityBar())
mPicker.changeOpacityBarColor(mColor);
}
invalidate();
}
RoundRectDrawableWithShadow.java 文件源码
项目:boohee_v5.6
阅读 41
收藏 0
点赞 0
评论 0
private void buildShadowCorners() {
RectF innerBounds = new RectF(-this.mCornerRadius, -this.mCornerRadius, this.mCornerRadius, this.mCornerRadius);
RectF outerBounds = new RectF(innerBounds);
outerBounds.inset(-this.mShadowSize, -this.mShadowSize);
if (this.mCornerShadowPath == null) {
this.mCornerShadowPath = new Path();
} else {
this.mCornerShadowPath.reset();
}
this.mCornerShadowPath.setFillType(FillType.EVEN_ODD);
this.mCornerShadowPath.moveTo(-this.mCornerRadius, 0.0f);
this.mCornerShadowPath.rLineTo(-this.mShadowSize, 0.0f);
this.mCornerShadowPath.arcTo(outerBounds, 180.0f, 90.0f, false);
this.mCornerShadowPath.arcTo(innerBounds, 270.0f, -90.0f, false);
this.mCornerShadowPath.close();
float startRatio = this.mCornerRadius / (this.mCornerRadius + this.mShadowSize);
this.mCornerShadowPaint.setShader(new RadialGradient(0.0f, 0.0f, this.mCornerRadius + this.mShadowSize, new int[]{this.mShadowStartColor, this.mShadowStartColor, this.mShadowEndColor}, new float[]{0.0f, startRatio, 1.0f}, TileMode.CLAMP));
this.mEdgeShadowPaint.setShader(new LinearGradient(0.0f, (-this.mCornerRadius) + this.mShadowSize, 0.0f, (-this.mCornerRadius) - this.mShadowSize, new int[]{this.mShadowStartColor, this.mShadowStartColor, this.mShadowEndColor}, new float[]{0.0f, 0.5f, 1.0f}, TileMode.CLAMP));
this.mEdgeShadowPaint.setAntiAlias(false);
}
OvercastType.java 文件源码
项目:FakeWeather
阅读 38
收藏 0
点赞 0
评论 0
@Override
public void generateElements() {
cloudShader = new LinearGradient(getWidth() / 2, 0, getWidth() / 2, getHeight() * 0.618f, 0xFFFFFFFF,
0x00FFFFFF, Shader.TileMode.CLAMP);
final float textSize = getHeight() / 32f;
fanPath.reset();
final float fanSize = textSize * 0.2f;// 风扇底部半圆的半径
final float fanHeight = textSize * 2f;
final float fanCenterOffsetY = fanSize * 1.6f;
fanPath.addArc(new RectF(-fanSize, -fanSize - fanCenterOffsetY, fanSize, fanSize - fanCenterOffsetY), 0,
180);
fanPath.quadTo(-fanSize * 1f, -fanHeight * 0.5f - fanCenterOffsetY, 0, -fanHeight - fanCenterOffsetY);
fanPath.quadTo(fanSize * 1f, -fanHeight * 0.5f - fanCenterOffsetY, fanSize, -fanCenterOffsetY);
fanPath.close();
fanPillarPath.reset();
final float fanPillarSize = textSize * 0.20f;// 柱子的宽度
fanPillarPath.moveTo(0, 0);
fanPillerHeight = textSize * 4f;// 柱子的高度
fanPillarPath.lineTo(2, 0);
fanPillarPath.lineTo(fanPillarSize, fanPillerHeight);
fanPillarPath.lineTo(-fanPillarSize, fanPillerHeight);
fanPillarPath.lineTo(-2, 0);
fanPillarPath.close();
}
ValueBar.java 文件源码
项目:xlight_android_native
阅读 37
收藏 0
点赞 0
评论 0
/**
* 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();
}
ShimmerLayout.java 文件源码
项目:ShimmerLayout
阅读 34
收藏 0
点赞 0
评论 0
private Bitmap getSourceMaskBitmap() {
if (sourceMaskBitmap != null) {
return sourceMaskBitmap;
}
int width = maskRect.width();
int height = getHeight();
final int edgeColor = reduceColorAlphaValueToZero(shimmerColor);
LinearGradient gradient = new LinearGradient(
-maskRect.left, 0,
width + maskRect.left, 0,
new int[]{edgeColor, shimmerColor, shimmerColor, edgeColor},
getGradientColorDistribution(),
Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(gradient);
sourceMaskBitmap = createBitmap(width, height);
Canvas canvas = new Canvas(sourceMaskBitmap);
canvas.rotate(shimmerAngle, width / 2, height / 2);
canvas.drawRect(-maskRect.left, maskRect.top, width + maskRect.left, maskRect.bottom, paint);
return sourceMaskBitmap;
}
HueDrawable.java 文件源码
项目:spline
阅读 40
收藏 0
点赞 0
评论 0
@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);
}
VerticalSlideColorPicker.java 文件源码
项目:Cable-Android
阅读 67
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
viewWidth = w;
viewHeight = h;
centerX = viewWidth / 2;
colorPickerRadius = (viewWidth / 2) - borderWidth;
colorPickerBody = new RectF(centerX - colorPickerRadius, borderWidth + colorPickerRadius, centerX + colorPickerRadius, viewHeight - (borderWidth + colorPickerRadius));
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);
resetToDefault();
}
TerminalSeekBar.java 文件源码
项目:terminal-seekbar
阅读 38
收藏 0
点赞 0
评论 0
/**
* getting the fields initialized ...
*/
private void initialize() {
absLeft = getPaddingLeft() + mPaddingSize;
absRight = getWidth() - getPaddingRight() - mPaddingSize;
absTop = getPaddingTop() + mPaddingSize;
absBottom = getHeight() - getPaddingBottom() - mPaddingSize;
thumbRadius = thumbHeight / 2;
mPaddingSize = (int) thumbRadius;
barWidth = absRight - absLeft;
mSeekBarRect = new Rect(absLeft, absTop, absRight, absTop + barHeight);
mSeekBarGradient = new LinearGradient(0, 0, mSeekBarRect.width(), 0, mBarColor, mBarColor, Shader.TileMode.MIRROR);
mBarRectPaint = new Paint();
mBarRectPaint.setShader(mSeekBarGradient);
mBarRectPaint.setAntiAlias(true);
terminalRadius = barHeight / 2 + 5;
}
SpanActivity.java 文件源码
项目:GitHub
阅读 42
收藏 0
点赞 0
评论 0
private void initAnimSpan() {
mShaderWidth = 64 * density * 4;
mShader = new LinearGradient(0, 0,
mShaderWidth, 0,
getResources().getIntArray(R.array.rainbow),
null,
Shader.TileMode.REPEAT);
matrix = new Matrix();
mBlurMaskFilterSpan = new BlurMaskFilterSpan(25);
mShadowSpan = new ShadowSpan(8, 8, 8, Color.WHITE);
mForegroundAlphaColorSpan = new ForegroundAlphaColorSpan(Color.TRANSPARENT);
mForegroundAlphaColorSpanGroup = new ForegroundAlphaColorSpanGroup(0);
mPrinterString = "打印动画,后面的文字是为了测试打印效果...";
mSpanUtils = new SpanUtils()
.appendLine("彩虹动画").setFontSize(64, true).setShader(mShader)
.appendLine("模糊动画").setFontSize(64, true).setSpans(mBlurMaskFilterSpan)
.appendLine("阴影动画").setFontSize(64, true).setBackgroundColor(Color.BLACK).setSpans(mShadowSpan)
.appendLine("透明动画").setFontSize(64, true).setSpans(mForegroundAlphaColorSpan);
for (int i = 0, len = mPrinterString.length(); i < len; ++i) {
ForegroundAlphaColorSpan span = new ForegroundAlphaColorSpan(Color.TRANSPARENT);
mSpanUtils.append(mPrinterString.substring(i, i + 1)).setSpans(span);
mForegroundAlphaColorSpanGroup.addSpan(span);
}
animSsb = mSpanUtils.create();
}
ImageUtils.java 文件源码
项目:Android-UtilCode
阅读 39
收藏 0
点赞 0
评论 0
/**
* 添加倒影
*
* @param src 源图片的
* @param reflectionHeight 倒影高度
* @param recycle 是否回收
* @return 带倒影图片
*/
public static Bitmap addReflection(Bitmap src, int reflectionHeight, boolean recycle) {
if (isEmptyBitmap(src)) return null;
// 原图与倒影之间的间距
final int REFLECTION_GAP = 0;
int srcWidth = src.getWidth();
int srcHeight = src.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionBitmap = Bitmap.createBitmap(src, 0, srcHeight - reflectionHeight,
srcWidth, reflectionHeight, matrix, false);
Bitmap ret = Bitmap.createBitmap(srcWidth, srcHeight + reflectionHeight, src.getConfig());
Canvas canvas = new Canvas(ret);
canvas.drawBitmap(src, 0, 0, null);
canvas.drawBitmap(reflectionBitmap, 0, srcHeight + REFLECTION_GAP, null);
Paint paint = new Paint();
paint.setAntiAlias(true);
LinearGradient shader = new LinearGradient(0, srcHeight,
0, ret.getHeight() + REFLECTION_GAP,
0x70FFFFFF, 0x00FFFFFF, Shader.TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.DST_IN));
canvas.drawRect(0, srcHeight + REFLECTION_GAP,
srcWidth, ret.getHeight(), paint);
if (!reflectionBitmap.isRecycled()) reflectionBitmap.recycle();
if (recycle && !src.isRecycled()) src.recycle();
return ret;
}
ImageUtils.java 文件源码
项目:HeadlineNews
阅读 40
收藏 0
点赞 0
评论 0
/**
* 添加倒影
*
* @param src 源图片的
* @param reflectionHeight 倒影高度
* @param recycle 是否回收
* @return 带倒影图片
*/
public static Bitmap addReflection(final Bitmap src, final int reflectionHeight, final boolean recycle) {
if (isEmptyBitmap(src)) return null;
// 原图与倒影之间的间距
final int REFLECTION_GAP = 0;
int srcWidth = src.getWidth();
int srcHeight = src.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionBitmap = Bitmap.createBitmap(src, 0, srcHeight - reflectionHeight,
srcWidth, reflectionHeight, matrix, false);
Bitmap ret = Bitmap.createBitmap(srcWidth, srcHeight + reflectionHeight, src.getConfig());
Canvas canvas = new Canvas(ret);
canvas.drawBitmap(src, 0, 0, null);
canvas.drawBitmap(reflectionBitmap, 0, srcHeight + REFLECTION_GAP, null);
Paint paint = new Paint();
paint.setAntiAlias(true);
LinearGradient shader = new LinearGradient(0, srcHeight,
0, ret.getHeight() + REFLECTION_GAP,
0x70FFFFFF, 0x00FFFFFF, Shader.TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawRect(0, srcHeight + REFLECTION_GAP,
srcWidth, ret.getHeight(), paint);
if (!reflectionBitmap.isRecycled()) reflectionBitmap.recycle();
if (recycle && !src.isRecycled()) src.recycle();
return ret;
}
PCanvas.java 文件源码
项目:phonk
阅读 45
收藏 0
点赞 0
评论 0
@ProtoMethod(description = "Create a linear shader", example = "")
@ProtoMethodParam(params = {"x1", "y1", "x2", "y2", "colorHex1", "colorHex2", "tileMode"})
public Shader linearShader(float x1, float y1, float x2, float y2, String c1, String c2) {
Shader.TileMode mode = Shader.TileMode.REPEAT;
Shader shader = new LinearGradient(x1, y1, x2, y2, Color.parseColor(c1), Color.parseColor(c2), mode);
return shader;
}
FloatingActionButtonLibrary.java 文件源码
项目:MyCalendar
阅读 52
收藏 0
点赞 0
评论 0
private Drawable createInnerStrokesDrawable(final int color, float strokeWidth) {
if (!mStrokeVisible) {
return new ColorDrawable(Color.TRANSPARENT);
}
ShapeDrawable shapeDrawable = new ShapeDrawable(new OvalShape());
final int bottomStrokeColor = darkenColor(color);
final int bottomStrokeColorHalfTransparent = halfTransparent(bottomStrokeColor);
final int topStrokeColor = lightenColor(color);
final int topStrokeColorHalfTransparent = halfTransparent(topStrokeColor);
final Paint paint = shapeDrawable.getPaint();
paint.setAntiAlias(true);
paint.setStrokeWidth(strokeWidth);
paint.setStyle(Style.STROKE);
shapeDrawable.setShaderFactory(new ShaderFactory() {
@Override
public Shader resize(int width, int height) {
return new LinearGradient(width / 2, 0, width / 2, height,
new int[] { topStrokeColor, topStrokeColorHalfTransparent, color, bottomStrokeColorHalfTransparent, bottomStrokeColor },
new float[] { 0f, 0.2f, 0.5f, 0.8f, 1f },
TileMode.CLAMP
);
}
});
return shapeDrawable;
}
VoiceWaveView.java 文件源码
项目:WaveAudioVizualization
阅读 38
收藏 0
点赞 0
评论 0
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h) {
mHeight = h;
mMaxAmpl = h / 2;
// mCurrentAmpl = mMaxAmpl;
mWidth = w;
mPaints.get(0).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#CA67B7"), Color.parseColor("#C081C1"), Shader.TileMode.MIRROR));
mPaints.get(0).setStrokeWidth(ScreenUtils.dp2px(getContext(), 2));
mPaints.get(1).setColor(Color.parseColor("#D5E3FA"));
mPaints.get(1).setStrokeWidth(ScreenUtils.dp2px(getContext(), 2));
mPaints.get(2).setStrokeWidth(ScreenUtils.dp2px(getContext(), 1));
mPaints.get(3).setStrokeWidth(ScreenUtils.dp2px(getContext(), 1));
mPaints.get(2).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#E67EA5"), Color.parseColor("#7F7AE1"), Shader.TileMode.MIRROR));
mPaints.get(3).setShader(new LinearGradient(0, 0, mWidth, mHeight, Color.parseColor("#E67EA5"), Color.parseColor("#7F7AE1"), Shader.TileMode.MIRROR));
}
MainActivity.java 文件源码
项目:YGuider
阅读 43
收藏 0
点赞 0
评论 0
private Paint getPaint() {
Paint p = new Paint();
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(10);
p.setShader(new LinearGradient(0, 0, 10, 10, Color.YELLOW, Color.RED, Shader.TileMode.REPEAT));
p.setColor(Color.BLUE);
return p;
}
ImageUtils.java 文件源码
项目:RLibrary
阅读 45
收藏 0
点赞 0
评论 0
/**
* 添加倒影
*
* @param src 源图片的
* @param reflectionHeight 倒影高度
* @param recycle 是否回收
* @return 带倒影图片
*/
public static Bitmap addReflection(Bitmap src, int reflectionHeight, boolean recycle) {
if (isEmptyBitmap(src)) return null;
// 原图与倒影之间的间距
final int REFLECTION_GAP = 0;
int srcWidth = src.getWidth();
int srcHeight = src.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionBitmap = Bitmap.createBitmap(src, 0, srcHeight - reflectionHeight,
srcWidth, reflectionHeight, matrix, false);
Bitmap ret = Bitmap.createBitmap(srcWidth, srcHeight + reflectionHeight, src.getConfig());
Canvas canvas = new Canvas(ret);
canvas.drawBitmap(src, 0, 0, null);
canvas.drawBitmap(reflectionBitmap, 0, srcHeight + REFLECTION_GAP, null);
Paint paint = new Paint();
paint.setAntiAlias(true);
LinearGradient shader = new LinearGradient(0, srcHeight,
0, ret.getHeight() + REFLECTION_GAP,
0x70FFFFFF, 0x00FFFFFF, Shader.TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawRect(0, srcHeight + REFLECTION_GAP,
srcWidth, ret.getHeight(), paint);
if (!reflectionBitmap.isRecycled()) reflectionBitmap.recycle();
if (recycle && !src.isRecycled()) src.recycle();
return ret;
}
ColorPicker.java 文件源码
项目:planetcon
阅读 40
收藏 0
点赞 0
评论 0
private void drawColorDiamond(Canvas canvas, double hueAngle, double radius) {
int pureColor, brightColor, darkColor;
double leftAngle = hueAngle + Math.toRadians(120);
double rightAngle = hueAngle - Math.toRadians(120);
float tipAngleX = xToDraw(Math.cos(hueAngle) * radius);
float tipAngleY = yToDraw(Math.sin(hueAngle) * radius);
float leftAngleX = xToDraw(Math.cos(leftAngle) * radius);
float leftAngleY = yToDraw(Math.sin(leftAngle) * radius);
float rightAngleX = xToDraw(Math.cos(rightAngle) * radius);
float rightAngleY = yToDraw(Math.sin(rightAngle) * radius);
mTrianglePath.reset();
mTrianglePath.moveTo(tipAngleX, tipAngleY);
mTrianglePath.lineTo(rightAngleX, rightAngleY);
mTrianglePath.lineTo(leftAngleX, leftAngleY);
mTrianglePath.lineTo(tipAngleX, tipAngleY);
// pureColor
mHSV[0] = mColorHSV[0];
mHSV[1] = 1; mHSV[2] = 1;
pureColor = Color.HSVToColor(mHSV);
// brightColor
mHSV[1] = 0; mHSV[2] = 1;
brightColor = Color.HSVToColor(mHSV);
// darkColor
mHSV[1] = 1; mHSV[2] = 0;
darkColor = Color.HSVToColor(mHSV);
Shader gradient1 = new LinearGradient(leftAngleX, leftAngleY, tipAngleX, tipAngleY, brightColor, pureColor, TileMode.CLAMP);
Shader gradient2 = new LinearGradient(leftAngleX, leftAngleY, rightAngleX, rightAngleY, brightColor, darkColor, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(gradient1, gradient2, PorterDuff.Mode.MULTIPLY);
mColorPaint.setShader(composeShader);
canvas.drawPath(mTrianglePath, mColorPaint);
}
OwnCustomView.java 文件源码
项目:Building-Android-UIs-with-Custom-Views
阅读 35
收藏 0
点赞 0
评论 0
@Override
protected void onDraw(Canvas canvas) {
if (needsUpdate) {
int[] colors = new int[] {topLeftColor, topRightColor, bottomRightColor, bottomLeftColor};
LinearGradient lg = new LinearGradient(0, 0, getWidth(), getHeight(), colors, null, Shader.TileMode.CLAMP);
backgroundPaint.setShader(lg);
needsUpdate = false;
}
canvas.drawRect(0, 0, getWidth(), getHeight(), backgroundPaint);
super.onDraw(canvas);
}
DayView.java 文件源码
项目:boohee_v5.6
阅读 45
收藏 0
点赞 0
评论 0
private static Drawable generateCircleDrawable(final int color) {
ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
drawable.setShaderFactory(new ShaderFactory() {
public Shader resize(int width, int height) {
return new LinearGradient(0.0f, 0.0f, 0.0f, 0.0f, color, color, TileMode.REPEAT);
}
});
return drawable;
}
MultiColorSpan.java 文件源码
项目:snippety
阅读 35
收藏 0
点赞 0
评论 0
@Override
public void updateDrawState(TextPaint paint) {
paint.setStyle(Paint.Style.FILL);
Shader shader = new LinearGradient(0, 0, 0, paint.getTextSize() * colors.length, colors, null,
Shader.TileMode.MIRROR);
Matrix matrix = new Matrix();
matrix.setRotate(angle);
shader.setLocalMatrix(matrix);
paint.setShader(shader);
}
ChangeTabStrip.java 文件源码
项目:ChangeTabLayout
阅读 38
收藏 0
点赞 0
评论 0
/**
* 绘制左边阴影
*/
private void drawShadow(Canvas canvas){
final float width = shadowWidth * (1 - selectionOffsetX);
LinearGradient linearGradient = new LinearGradient(0, getHeight(), width, getHeight(), new int[] {shadowColor, Color.TRANSPARENT}, new float[]{shadowProportion, 1f}, Shader.TileMode.CLAMP);
shadowPaint.setShader(linearGradient);
canvas.drawRect(0, 0, width, getHeight(), shadowPaint);
}