/**
* 初始化BitmapShader
*/
private void setUpShader() {
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}
Bitmap bmp = drawableToBitamp(drawable);
// 将bmp作为着色器,就是在指定区域内绘制bmp
mBitmapShader = new BitmapShader(bmp, TileMode.CLAMP, TileMode.CLAMP);
float scale = 1.0f;
// 拿到bitmap宽或高的小值
int bSize = Math.min(bmp.getWidth(), bmp.getHeight());
scale = mWidth * 1.0f / bSize;
// shader的变换矩阵,我们这里主要用于放大或者缩小
mMatrix.setScale(scale, scale);
// 设置变换矩阵
mBitmapShader.setLocalMatrix(mMatrix);
// 设置shader
mBitmapPaint.setShader(mBitmapShader);
}
java类android.graphics.Shader.TileMode的实例源码
CircleImageView.java 文件源码
项目:Codebase
阅读 48
收藏 0
点赞 0
评论 0
ColorPicker.java 文件源码
项目:AyoSunny
阅读 25
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
BitmapUtils.java 文件源码
项目:info_demo
阅读 33
收藏 0
点赞 0
评论 0
public static Bitmap createReflectionImageWithOrigin(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;
}
ReflectView.java 文件源码
项目:TvLauncher
阅读 20
收藏 0
点赞 0
评论 0
/**
* Set the bitmap reflection
*
* @param bitmap
* @return
*/
public static Bitmap createReflectedImage(Bitmap bitmap, int reflectHeight) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
if (height <= reflectHeight) {
return null;
}
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height
- reflectHeight, width, reflectHeight, matrix, true);
Bitmap bitmapWithReflection = Bitmap.createBitmap(width, reflectHeight,
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);
return bitmapWithReflection;
}
AttitudeIndicator.java 文件源码
项目:droidplanner-master
阅读 27
收藏 0
点赞 0
评论 0
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
halfHeight = h / 2f;
halfWidth = w / 2f;
radiusExternal = Math.min(halfHeight, halfWidth) / YAW_ARROW_SIZE;
radiusInternal = radiusExternal * INTERNAL_RADIUS;
internalBounds = new RectF(-radiusInternal, -radiusInternal, radiusInternal, radiusInternal);
skyPaint.setShader(new LinearGradient(0, -radiusInternal, 0, radiusInternal, Color
.parseColor("#0082d6"), Color.parseColor("#2cb1e1"), TileMode.CLAMP));
groundPaint.setShader(new LinearGradient(0, radiusInternal, 0, radiusInternal, Color
.parseColor("#4bbba1"), Color.parseColor("#008f63"), TileMode.CLAMP));
}
RoundImageView.java 文件源码
项目:umeng_community_android
阅读 33
收藏 0
点赞 0
评论 0
/**
* 初始化BitmapShader
*/
private void setUpShader() {
Drawable drawable = getDrawable();
Bitmap bmp = drawableToBitamp(drawable);
if (drawable == null || bmp == null) {
return;
}
// 将bmp作为着色器,就是在指定区域内绘制bmp
mBitmapShader = new BitmapShader(bmp, TileMode.CLAMP, TileMode.CLAMP);
float scale = 1.0f;
// 拿到bitmap宽或高的小值
int bSize = Math.min(bmp.getWidth(), bmp.getHeight());
scale = mWidth * 1.0f / bSize;
// shader的变换矩阵,我们这里主要用于放大或者缩小
mMatrix.setScale(scale, scale);
// 设置变换矩阵
mBitmapShader.setLocalMatrix(mMatrix);
// 设置shader
mBitmapPaint.setShader(mBitmapShader);
}
ColorPicker.java 文件源码
项目:Domo-Android
阅读 21
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
MultiColorPicker.java 文件源码
项目:Domo-Android
阅读 20
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
GaugeView.java 文件源码
项目:WeatherStation
阅读 22
收藏 0
点赞 0
评论 0
/**
* Set default outer rim paint
*
* @return paint
* Paint for outer rim
*/
private Paint getDefaultOuterRimPaint() {
/** Linear gradient to create the 3D effect */
final LinearGradient verticalGradient = new LinearGradient(mOuterRimRect.left, mOuterRimRect.top, mOuterRimRect.left,
mOuterRimRect.bottom, Color.rgb(255, 255, 255), Color.rgb(84, 90, 100), TileMode.REPEAT);
/** Bitmap for outer rim */
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.darkwood);
/** Bitmap shader for the metallic style */
final BitmapShader outerRimTile = new BitmapShader(bitmap, TileMode.REPEAT, TileMode.REPEAT);
/** Matrix for outer rim */
final Matrix matrix = new Matrix();
matrix.setScale(1.0f / bitmap.getWidth(), 1.0f / bitmap.getHeight());
outerRimTile.setLocalMatrix(matrix);
/** Paint for outer rim */
final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(new ComposeShader(verticalGradient, outerRimTile, PorterDuff.Mode.MULTIPLY));
paint.setFilterBitmap(true);
return paint;
}
GaugeView.java 文件源码
项目:WeatherStation
阅读 22
收藏 0
点赞 0
评论 0
/**
* Set default inner rim paint
*
* @return paint
* Paint for inner rim
*/
private Paint getDefaultInnerRimPaint() {
/** Linear gradient to create the 3D effect */
final LinearGradient verticalGradient = new LinearGradient(mOuterRimRect.left, mOuterRimRect.top, mOuterRimRect.left,
mOuterRimRect.bottom, Color.rgb(255, 255, 255), Color.rgb(84, 90, 100), TileMode.REPEAT);
/** Bitmap for inner rim */
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.darkerwood);
/** Bitmap shader for the metallic style */
final BitmapShader innerRimTile = new BitmapShader(bitmap, TileMode.REPEAT, TileMode.REPEAT);
/** Matrix for inner rim */
final Matrix matrix = new Matrix();
matrix.setScale(1.0f / bitmap.getWidth(), 1.0f / bitmap.getHeight());
innerRimTile.setLocalMatrix(matrix);
/** Paint for outer rim */
final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(new ComposeShader(verticalGradient, innerRimTile, PorterDuff.Mode.MULTIPLY));
paint.setFilterBitmap(true);
return paint;
}