/**
* 获得带倒影的图片 . <br>
* @author liulongzhenhai 2012-8-1 下午5:25:37 <br>
* @param bitmap 图片对象
* @return 图片
*/
public static Bitmap createReflectionImageWithOrigin(final Bitmap bitmap) {
final int reflectionGap = 4;
final int w = bitmap.getWidth();
final int h = bitmap.getHeight();
final Matrix matrix = new Matrix();
matrix.preScale(1, -1);
final Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, h / 2, w, h / 2, matrix, false);
final Bitmap bitmapWithReflection = Bitmap.createBitmap(w, h + h / 2, Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(bitmap, 0, 0, null);
final Paint deafalutPaint = new Paint();
canvas.drawRect(0, h, w, h + reflectionGap, deafalutPaint);
canvas.drawBitmap(reflectionImage, 0, h + reflectionGap, null);
final Paint paint = new Paint();
final 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, h, w, bitmapWithReflection.getHeight() + reflectionGap, paint);
return bitmapWithReflection;
}
java类android.graphics.PorterDuff.Mode的实例源码
BitmapUtil.java 文件源码
项目:AppCommonFrame
阅读 34
收藏 0
点赞 0
评论 0
XBitmapUtils.java 文件源码
项目:XFrame
阅读 66
收藏 0
点赞 0
评论 0
/**
* 获得带倒影的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;
}
RoundedVignetteBitmapDisplayer.java 文件源码
项目:letv
阅读 26
收藏 0
点赞 0
评论 0
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
RadialGradient vignette = new RadialGradient(this.mRect.centerX(), (this.mRect.centerY() * 1.0f) / 0.7f, this.mRect.centerX() * 1.3f, new int[]{0, 0, 2130706432}, new float[]{0.0f, 0.7f, 1.0f}, TileMode.CLAMP);
Matrix oval = new Matrix();
oval.setScale(1.0f, 0.7f);
vignette.setLocalMatrix(oval);
this.paint.setShader(new ComposeShader(this.bitmapShader, vignette, Mode.SRC_OVER));
}
CommentHeadImageViewPlayerLibs.java 文件源码
项目:letv
阅读 31
收藏 0
点赞 0
评论 0
public Bitmap getCircleBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getWidth(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(-12434878);
int radius = bitmap.getWidth() >> 1;
canvas.drawCircle((float) radius, (float) radius, (float) radius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
PieItem.java 文件源码
项目:GravityBox
阅读 29
收藏 0
点赞 0
评论 0
public void setColor(PieController.ColorInfo colorInfo) {
mBackgroundPaint.setColor(colorInfo.bgColor);
mSelectedPaint.setColor(colorInfo.selectedColor);
mOutlinePaint.setColor(colorInfo.outlineColor);
if (mView instanceof ImageView) {
ImageView imageView = (ImageView)mView;
Drawable drawable = imageView.getDrawable();
if (drawable != null) {
drawable.setColorFilter(colorInfo.fgColor, Mode.SRC_ATOP);
imageView.setImageDrawable(drawable);
}
}
}
DrawableWrapperLollipop.java 文件源码
项目:boohee_v5.6
阅读 31
收藏 0
点赞 0
评论 0
public void setTintMode(Mode tintMode) {
if (isCompatTintEnabled()) {
setCompatTintMode(tintMode);
} else {
this.mDrawable.setTintMode(tintMode);
}
}
AppCompatDrawableManager.java 文件源码
项目:boohee_v5.6
阅读 35
收藏 0
点赞 0
评论 0
private static boolean tintDrawableUsingColorFilter(@NonNull Context context, @DrawableRes int resId, @NonNull Drawable drawable) {
Mode tintMode = DEFAULT_MODE;
boolean colorAttrSet = false;
int colorAttr = 0;
int alpha = -1;
if (arrayContains(COLORFILTER_TINT_COLOR_CONTROL_NORMAL, resId)) {
colorAttr = R.attr.colorControlNormal;
colorAttrSet = true;
} else if (arrayContains(COLORFILTER_COLOR_CONTROL_ACTIVATED, resId)) {
colorAttr = R.attr.colorControlActivated;
colorAttrSet = true;
} else if (arrayContains(COLORFILTER_COLOR_BACKGROUND_MULTIPLY, resId)) {
colorAttr = 16842801;
colorAttrSet = true;
tintMode = Mode.MULTIPLY;
} else if (resId == R.drawable.abc_list_divider_mtrl_alpha) {
colorAttr = 16842800;
colorAttrSet = true;
alpha = Math.round(40.8f);
}
if (!colorAttrSet) {
return false;
}
if (DrawableUtils.canSafelyMutateDrawable(drawable)) {
drawable = drawable.mutate();
}
drawable.setColorFilter(getPorterDuffColorFilter(ThemeUtils.getThemeAttrColor(context, colorAttr), tintMode));
if (alpha != -1) {
drawable.setAlpha(alpha);
}
return true;
}
RoundedImageView.java 文件源码
项目:eggs-android
阅读 37
收藏 0
点赞 0
评论 0
private Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) {
Bitmap finalBitmap;
if (bitmap.getWidth() != radius || bitmap.getHeight() != radius) {
finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius, false);
} else {
finalBitmap = bitmap;
}
Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
finalBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
finalBitmap.getHeight());
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
canvas.drawCircle(finalBitmap.getWidth() / 2,
finalBitmap.getHeight() / 2,
finalBitmap.getWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(finalBitmap, rect, rect, paint);
return output;
}
VectorDrawableCompat.java 文件源码
项目:boohee_v5.6
阅读 36
收藏 0
点赞 0
评论 0
private void updateStateFromTypedArray(TypedArray a, XmlPullParser parser) throws XmlPullParserException {
VectorDrawableCompatState state = this.mVectorState;
VPathRenderer pathRenderer = state.mVPathRenderer;
state.mTintMode = parseTintModeCompat(TypedArrayUtils.getNamedInt(a, parser, "tintMode", 6, -1), Mode.SRC_IN);
ColorStateList tint = a.getColorStateList(1);
if (tint != null) {
state.mTint = tint;
}
state.mAutoMirrored = TypedArrayUtils.getNamedBoolean(a, parser, "autoMirrored", 5, state.mAutoMirrored);
pathRenderer.mViewportWidth = TypedArrayUtils.getNamedFloat(a, parser, "viewportWidth", 7, pathRenderer.mViewportWidth);
pathRenderer.mViewportHeight = TypedArrayUtils.getNamedFloat(a, parser, "viewportHeight", 8, pathRenderer.mViewportHeight);
if (pathRenderer.mViewportWidth <= 0.0f) {
throw new XmlPullParserException(a.getPositionDescription() + "<vector> tag requires viewportWidth > 0");
} else if (pathRenderer.mViewportHeight <= 0.0f) {
throw new XmlPullParserException(a.getPositionDescription() + "<vector> tag requires viewportHeight > 0");
} else {
pathRenderer.mBaseWidth = a.getDimension(3, pathRenderer.mBaseWidth);
pathRenderer.mBaseHeight = a.getDimension(2, pathRenderer.mBaseHeight);
if (pathRenderer.mBaseWidth <= 0.0f) {
throw new XmlPullParserException(a.getPositionDescription() + "<vector> tag requires width > 0");
} else if (pathRenderer.mBaseHeight <= 0.0f) {
throw new XmlPullParserException(a.getPositionDescription() + "<vector> tag requires height > 0");
} else {
pathRenderer.setAlpha(TypedArrayUtils.getNamedFloat(a, parser, "alpha", 4, pathRenderer.getAlpha()));
String name = a.getString(0);
if (name != null) {
pathRenderer.mRootName = name;
pathRenderer.mVGTargetsMap.put(name, pathRenderer);
}
}
}
}
MIP_BitmapUtils.java 文件源码
项目:amap
阅读 32
收藏 0
点赞 0
评论 0
/**
* 图片创建倒影 TODO(这里用一句话描述这个方法的作用)
*
* @author 2013-10-12 下午3:58:39
* @param originalImage
* @param number
* @return Bitmap
*/
public static Bitmap createReflectedImage(Bitmap originalImage, int number)
{
final int reflectionGap = 0; // 倒影和原图片间的距离
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
double reflectHeight = number / 100.00;
number = (int)(height * reflectHeight);
// 倒影部分
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, number, width, number, matrix, false);
// 要返回的倒影图片
Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + number), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapWithReflection);
// 画原来的图片
canvas.drawBitmap(originalImage, 0, 0, null);
// Paint defaultPaint = new Paint();
// //倒影和原图片间的距离
// canvas.drawRect(0, height, width, height + reflectionGap,
// defaultPaint);
// 画倒影部分
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
LinearGradient shader =
new LinearGradient(0, originalImage.getHeight(), 0, bitmapWithReflection.getHeight() + reflectionGap,
0x70ffffff, 0x00ffffff, TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);
return bitmapWithReflection;
}