项目:QMUI_Android
文件:QMUIDrawableHelper.java
/**
* 从一个view创建Bitmap。
* 注意点:绘制之前要清掉 View 的焦点,因为焦点可能会改变一个 View 的 UI 状态。
* 来源:https://github.com/tyrantgit/ExplosionField
*
* @param view 传入一个 View,会获取这个 View 的内容创建 Bitmap。
* @param scale 缩放比例,对创建的 Bitmap 进行缩放,数值支持从 0 到 1。
*/
public static Bitmap createBitmapFromView(View view,float scale) {
if (view instanceof ImageView) {
Drawable drawable = ((ImageView) view).getDrawable();
if (drawable != null && drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
}
view.clearFocus();
Bitmap bitmap = createBitmapSafely((int) (view.getWidth() * scale),(int) (view.getHeight() * scale),Bitmap.Config.ARGB_8888,1);
if (bitmap != null) {
synchronized (sCanvas) {
Canvas canvas = sCanvas;
canvas.setBitmap(bitmap);
canvas.save();
canvas.drawColor(Color.WHITE); // 防止 View 上面有些区域空白导致最终 Bitmap 上有些区域变黑
canvas.scale(scale,scale);
view.draw(canvas);
canvas.restore();
canvas.setBitmap(null);
}
}
return bitmap;
}
项目:GitHub
文件:CrossShapeRenderer.java
@Override
public void renderShape(Canvas c,IScatterDataSet dataSet,ViewPortHandler viewPortHandler,float posX,float posY,Paint renderPaint) {
final float shapeHalf = dataSet.getScatterShapeSize() / 2f;
renderPaint.setStyle(Paint.Style.stroke);
renderPaint.setstrokeWidth(Utils.convertDpToPixel(1f));
c.drawLine(
posX - shapeHalf,posY,posX + shapeHalf,renderPaint);
c.drawLine(
posX,posY - shapeHalf,posX,posY + shapeHalf,renderPaint);
}
项目:GitHub
文件:XAxisRendererHorizontalBarChart.java
@Override
public void renderAxisLine(Canvas c) {
if (!mXAxis.isDrawAxisLineEnabled() || !mXAxis.isEnabled())
return;
mAxisLinePaint.setColor(mXAxis.getAxisLineColor());
mAxisLinePaint.setstrokeWidth(mXAxis.getAxislinewidth());
if (mXAxis.getPosition() == XAxisPosition.TOP
|| mXAxis.getPosition() == XAxisPosition.TOP_INSIDE
|| mXAxis.getPosition() == XAxisPosition.BOTH_SIDED) {
c.drawLine(mViewPortHandler.contentRight(),mViewPortHandler.contentTop(),mViewPortHandler.contentRight(),mViewPortHandler.contentBottom(),mAxisLinePaint);
}
if (mXAxis.getPosition() == XAxisPosition.BottOM
|| mXAxis.getPosition() == XAxisPosition.BottOM_INSIDE
|| mXAxis.getPosition() == XAxisPosition.BOTH_SIDED) {
c.drawLine(mViewPortHandler.contentLeft(),mViewPortHandler.contentLeft(),mAxisLinePaint);
}
}
@Override
public void draw(Canvas canvas,Paint paint) {
float circleSpacing=4;
float radius=(getWidth()-circleSpacing*4)/6;
float x = getWidth()/ 2-(radius*2+circleSpacing);
float y = getWidth()/ 2-(radius*2+circleSpacing);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
canvas.save();
float translateX=x+(radius*2)*j+circleSpacing*j;
float translateY=y+(radius*2)*i+circleSpacing*i;
canvas.translate(translateX,translateY);
canvas.scale(scaleFloats[3 * i + j],scaleFloats[3 * i + j]);
paint.setAlpha(alphas[3 * i + j]);
canvas.drawCircle(0,radius,paint);
canvas.restore();
}
}
}
项目:musicplayer
文件:UnderlinePageIndicator.java
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mViewPager == null) {
return;
}
final int count = mViewPager.getAdapter().getCount();
if (count == 0) {
return;
}
if (mCurrentPage >= count) {
setCurrentItem(count - 1);
return;
}
final int paddingLeft = getPaddingLeft();
final float pageWidth = (getWidth() - paddingLeft - getPaddingRight()) / (1f * count);
final float left = paddingLeft + pageWidth * (mCurrentPage + mPositionOffset);
final float right = left + pageWidth;
final float top = getPaddingTop();
final float bottom = getHeight() - getPaddingBottom();
canvas.drawRect(left,top,right,bottom,mPaint);
}
项目:BezierView
文件:BezierQuadView.java
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPath.reset();
//贝塞尔曲线
mPath.moveto(mStartXPoint,mStartYPoint);
mPath.quadTo(mConXPoint,mConYPoint,mEndXPoint,mEndYPoint);
canvas.drawPath(mPath,mPaint);
//辅助线
canvas.drawLine(mStartXPoint,mStartYPoint,mConXPoint,mLinePaint);
canvas.drawLine(mConXPoint,mEndYPoint,mLinePaint);
//文字
canvas.drawPoint(mStartXPoint,mPaint);
canvas.drawText("起始点",mStartXPoint,mStartYPoint + 30,mTextPaint);
canvas.drawPoint(mEndXPoint,mPaint);
canvas.drawText("结束点",mEndYPoint + 30,mTextPaint);
canvas.drawPoint(mConXPoint,mPaint);
canvas.drawText("控制点",mConYPoint - 30,mTextPaint);
}
项目:GitHub
文件:BitmapUtils.java
public static Bitmap circleBitmap(Bitmap source) {
//获取图片的宽度
int width = source.getWidth();
//创建一个与source等宽的Bitmap对象
Bitmap bitmap = Bitmap.createBitmap(width,width,Bitmap.Config.ARGB_8888);
//创建等大小的画布
Canvas canvas = new Canvas(bitmap);
//绘制一个圆圈:将此圆圈理解为下层图片
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawCircle(width / 2,width / 2,paint);
//设置图片相交情况下的处理方式
//setXfermode:设置当绘制的图像出现相交情况时候的处理方式的,它包含的常用模式有哪几种
//PorterDuff.Mode.SRC_IN 取两层图像交集部门,只显示上层图像,注意这里是指取相交叉的部分,然后显示上层图像
//PorterDuff.Mode.DST_IN 取两层图像交集部门,只显示下层图像
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//source:理解为上层图片
canvas.drawBitmap(source,paint);
return bitmap;
}
项目:Phial
文件:PhialButton.java
@Override
protected void onDraw(Canvas canvas) {
int w = getWidth();
int h = getHeight();
int cx = w / 2;
int cy = (int) (h / 2f - getShadowDy());
int radius = (int) (Math.min(w,h) / 2f - shadowSize);
canvas.drawCircle(cx,cy,bgPaint);
if (icon != null) {
final int targetW = getIconSize(2 * radius,icon.getIntrinsicWidth());
final int targetH = getIconSize(2 * radius,icon.getIntrinsicHeight());
icon.setBounds(cx - targetW / 2,cy - targetH / 2,cx + targetW / 2,cy + targetH / 2);
icon.draw(canvas);
}
}
项目:egma-handwriting-numbers
文件:DrawView.java
@Override
public void onDraw(Canvas canvas) {
if (mModel == null) {
return;
}
if (!mSetuped) {
setup();
}
if (mOffscreenBitmap == null) {
return;
}
int startIndex = mDrawnLinesize - 1;
if (startIndex < 0) {
startIndex = 0;
}
DraWrenderer.renderModel(mOffscreenCanvas,mModel,mPaint,startIndex);
canvas.drawBitmap(mOffscreenBitmap,mMatrix,mPaint);
mDrawnLinesize = mModel.getLinesize();
}
private void drawHorizontal(Canvas canvas,RecyclerView parent) {
final int left = parent.getPaddingLeft();
final int right = parent.getMeasuredWidth() - parent.getPaddingRight();
final int childSize = parent.getChildCount();
//childSize-1 最后一个item不显示分割线
for (int i = 0; i < childSize-1; i++) {
final View child = parent.getChildAt(i);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + layoutParams.bottomMargin;
final int bottom = top + mDividerHeight;
if (mDivider != null) {
mDivider.setBounds(left,bottom);
mDivider.draw(canvas);
}
if (mPaint != null) {
canvas.drawRect(left,mPaint);
}
}
}
项目:GitHub
文件:YAxisRendererHorizontalBarChart.java
/**
* draws the y-labels on the specified x-position
*
* @param fixedPosition
* @param positions
*/
@Override
protected void drawYLabels(Canvas c,float fixedPosition,float[] positions,float offset) {
mAxisLabelPaint.setTypeface(mYAxis.getTypeface());
mAxisLabelPaint.setTextSize(mYAxis.getTextSize());
mAxisLabelPaint.setColor(mYAxis.getTextColor());
final int from = mYAxis.isDrawBottomYLabelEntryEnabled() ? 0 : 1;
final int to = mYAxis.isDrawTopYLabelEntryEnabled()
? mYAxis.mEntryCount
: (mYAxis.mEntryCount - 1);
for (int i = from; i < to; i++) {
String text = mYAxis.getFormattedLabel(i);
c.drawText(text,positions[i * 2],fixedPosition - offset,mAxisLabelPaint);
}
}
项目:RollSquareView
文件:Utils.java
/**
* 确保drawable是能够拿到宽高的drawable
*
* @param drawable
* @return
*/
public static Bitmap drawabletoBitmap(Drawable drawable) {
if (drawable == null
&& drawable.getIntrinsicWidth() > 0
&& drawable.getIntrinsicHeight() > 0) {
return null;
}
Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),drawable.getopacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
Log.i("Utilities","drawabletoBitmap drawable.getIntrinsicWidth()=" + drawable.getIntrinsicWidth()
+ ",drawable.getIntrinsicHeight()="
+ drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}
项目:HeadlineNews
文件:ImageUtils.java
/**
* 添加文字水印
*
* @param src 源图片
* @param content 水印文本
* @param textSize 水印字体大小
* @param color 水印字体颜色
* @param x 起始坐标x
* @param y 起始坐标y
* @param recycle 是否回收
* @return 带有文字水印的图片
*/
public static Bitmap addTextWatermark(final Bitmap src,final String content,final float textSize,final int color,final float x,final float y,final boolean recycle) {
if (isEmptyBitmap(src) || content == null) return null;
Bitmap ret = src.copy(src.getConfig(),true);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
Canvas canvas = new Canvas(ret);
paint.setColor(color);
paint.setTextSize(textSize);
Rect bounds = new Rect();
paint.getTextBounds(content,content.length(),bounds);
canvas.drawText(content,x,y + textSize,paint);
if (recycle && !src.isRecycled()) src.recycle();
return ret;
}
项目:SmartRefreshLayout
文件:PhoenixHeader.java
private void drawSky(Canvas canvas,int width,int height) {
Matrix matrix = mMatrix;
matrix.reset();
int bWidth = mDrawableSky.width();//mSky.getWidth();
int bHeight = mDrawableSky.height();//mSky.getHeight();
float townScale = 1f * width / bWidth;
float offsetx = 0;
float offsety = height / 2 - bHeight / 2;
// matrix.postScale(townScale,townScale);
// matrix.postTranslate(offsetx,offsety);
//
// canvas.drawBitmap(mSky,matrix,null);
final int saveCount = canvas.getSaveCount();
canvas.save();
canvas.translate(offsetx,offsety);
matrix.postScale(townScale,townScale);
mDrawableSky.draw(canvas);
canvas.restoretoCount(saveCount);
}
项目:Blogg
文件:Tools.java
public static Bitmap getCroppedBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0,bitmap.getWidth(),bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawARGB(0,0);
paint.setColor(color);
// canvas.drawRoundRect(rectF,roundPx,paint);
canvas.drawCircle(bitmap.getWidth() / 2,bitmap.getHeight() / 2,bitmap.getWidth() / 2,paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap,rect,paint);
//Bitmap _bmp = Bitmap.createScaledBitmap(output,60,false);
//return _bmp;
return output;
}
项目:diycode
文件:ACache.java
private static Bitmap drawable2Bitmap(Drawable drawable) {
if (drawable == null) {
return null;
}
// 取 drawable 的长宽
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
// 取 drawable 的颜色格式
Bitmap.Config config = drawable.getopacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
// 建立对应 bitmap
Bitmap bitmap = Bitmap.createBitmap(w,h,config);
// 建立对应 bitmap 的画布
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0,w,h);
// 把 drawable 内容画到画布中
drawable.draw(canvas);
return bitmap;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
secondaryPaint.setAlpha(255);
canvas.drawRect(0,canvas.getWidth(),2,secondaryPaint);
int currentWidth = (int) (canvas.getWidth() * ((float) progress / maxProgress));
for (int i = 0; i < maxProgress; i += 10) {
int width = (int) (canvas.getWidth() * ((float) i / maxProgress));
secondaryPaint.setAlpha(Math.max(255 - (int) ((float) Math.abs(width - currentWidth) * 1000 / canvas.getWidth()),0));
canvas.drawRect(width - 1,width + 1,ConversionUtils.getPixelsFromDp(i % 20 == 0 ? 6 : 4),secondaryPaint);
}
canvas.drawRect(0,currentWidth,accentPaint);
canvas.drawRect(currentWidth - 1,currentWidth + 1,ConversionUtils.getPixelsFromDp(10),accentPaint);
}
项目:chromium-for-android-56-debug-video
文件:FadingEdgeScrollView.java
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
setVerticalFadingEdgeEnabled(true);
float topShadowStrength = getTopFadingEdgeStrength();
float bottomShadowStrength = getBottomFadingEdgeStrength();
float shadowHeight = getVerticalFadingEdgeLength();
setVerticalFadingEdgeEnabled(false);
if (mDrawTopShadow) {
mFadingShadow.drawShadow(this,canvas,FadingShadow.POSITION_TOP,shadowHeight,topShadowStrength);
}
if (mDrawBottomShadow) {
mFadingShadow.drawShadow(this,FadingShadow.POSITION_BottOM,bottomShadowStrength);
}
}
项目:Cluttr
文件:CropOverlayView.java
/**
* Draw borders of the crop area.
*/
private void drawBorders(Canvas canvas) {
if (mBorderPaint != null) {
float w = mBorderPaint.getstrokeWidth();
RectF rect = mCropWindowHandler.getRect();
rect.inset(w / 2,w / 2);
if (mCropShape == CropImageView.CropShape.RECTANGLE) {
// Draw rectangle crop window border.
canvas.drawRect(rect,mBorderPaint);
} else {
// Draw circular crop window border
canvas.drawoval(rect,mBorderPaint);
}
}
}
项目:FlickLauncher
文件:LauncherEdgeEffect.java
/**
* Draw into the provided canvas. Assumes that the canvas has been rotated
* accordingly and the size has been set. The effect will be drawn the full
* width of X=0 to X=width,beginning from Y=0 and extending to some factor <
* 1.f of height.
*
* @param canvas Canvas to draw into
* @return true if drawing should continue beyond this frame to continue the
* animation
*/
public boolean draw(Canvas canvas) {
update();
final float centerX = mBounds.centerX();
final float centerY = mBounds.height() - mRadius;
canvas.scale(1.f,Math.min(mGlowScaleY,1.f) * mBaseGlowScale,centerX,0);
final float displacement = Math.max(0,Math.min(mdisplacement,1.f)) - 0.5f;
float translateX = mBounds.width() * displacement / 2;
mPaint.setAlpha((int) (0xff * mGlowAlpha));
canvas.drawCircle(centerX + translateX,centerY,mRadius,mPaint);
boolean oneLastFrame = false;
if (mState == STATE_RECEDE && mGlowScaleY == 0) {
mState = STATE_IDLE;
oneLastFrame = true;
}
return mState != STATE_IDLE || oneLastFrame;
}
项目:PWEditText-SafeKeyboard
文件:SafePswText.java
private void drawText(Canvas canvas,String num,int i) {
int startPosition = getStartPosition();
Rect mTextBound = new Rect();
pswTextPaint.getTextBounds(num,num.length(),mTextBound);
Paint.FontMetrics fontMetrics = pswTextPaint.getFontMetrics();
float textx = startPosition
+ (float) ((i * (borderWidth + spacingWidth))
+ (borderWidth / 2 - mTextBound.width() / 2)
+ (0.5 * spacingWidth));
float textY = startPosition
+ (getMeasuredHeight() - fontMetrics.bottom + fontMetrics.top)
/ 2
- fontMetrics.top;
if (saveResult != 0 || saveResult < result.size()) {
canvas.drawText(num,textx,textY,pswTextPaint);
}
}
项目:CommonFramework
文件:MyItemdecoration.java
@Override
public void onDraw(Canvas c,RecyclerView parent,RecyclerView.State state) {
super.onDraw(c,parent,state);
int childCount = parent.getChildCount();
for(int i=0;i<childCount;i++){
View child=parent.getChildAt(i);
Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.parseColor("#eeeeee"));
paint.setStyle(Paint.Style.FILL);
paint.setstrokeWidth(2);
int startY=child.getTop()-size;
int startX=child.getLeft();
int endY=child.getTop()-size;
int enx=child.getRight();
c.drawLine(startX,startY,enx,endY,paint);
}
}
项目:Paathshala
文件:MainActivity.java
public static Bitmap getCircularBitmapFrom(Bitmap bitmap) {
if (bitmap == null || bitmap.isRecycled()) {
return null;
}
float radius = bitmap.getWidth() > bitmap.getHeight() ? ((float) bitmap
.getHeight()) / 2f : ((float) bitmap.getWidth()) / 2f;
Bitmap canvasBitmap = Bitmap.createBitmap(bitmap.getWidth(),Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
Canvas canvas = new Canvas(canvasBitmap);
canvas.drawCircle(bitmap.getWidth() / 2,paint);
return canvasBitmap;
}
项目:Bailan
文件:FlowIndicator.java
/**
* 重写绘制指示器view
* @param canvas
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float width = (getWidth() - ((radius * 2 * count) + (space * (count - 1)))) / 2.f;
for (int i = 0; i < count; i++) {
if (i == seleted) {
paint.setStyle(Style.FILL);
canvas.drawBitmap(bmp_selected,width + getPaddingLeft()
+ radius + i * (space + radius + radius),null);
} else {
paint.setStyle(Style.FILL);
canvas.drawBitmap(bmp_normal,width + getPaddingLeft() + radius
+ i * (space + radius + radius),null);
}
}
}
项目:betterHotels
文件:IconView.java
@Override
protected void onDraw(Canvas canvas){
Bitmap bitmap = ViewUtils.drawabletoBitmap(icon);
bitmap = Bitmap.createScaledBitmap(bitmap,currentSize,false);
canvas.drawBitmap(bitmap,new Paint());
if(showtext || (showtextWhenLarge && mode == Mode.LARGE)){
String text = getText();
RectF rect = new RectF();
int textHeight = ViewUtils.getTextHeight(text,textPaint);
int textWidth = ViewUtils.getTextWidth(text,textPaint);
rect.left = availableWidth - ((textWidth / 2) + textSize / 2);
rect.right = rect.left + textWidth + (textSize / 2);
if(3 * textHeight < availableHeight){
rect.top = 3 * textHeight;
}else if(2 * textHeight < availableHeight){
rect.top = 2 * textHeight;
}else{
rect.top = 0;
}
rect.bottom = rect.top + textHeight + textSize;
//Draw the text background
canvas.drawRect(rect,textBackgroundPaint);
//Draw the text
canvas.drawText(text,rect.left + textSize / 2,rect.top + textSize / 2,textPaint);
}
}
项目:RLibrary
文件:RExItemdecoration.java
@Override
public void onDraw(Canvas c,RecyclerView.State state) {
final RecyclerView.LayoutManager manager = parent.getLayoutManager();
if (manager instanceof StaggeredGridLayoutManager) {
return;
}
//线性布局
final linearlayoutmanager layoutManager = (linearlayoutmanager) manager;
final int firstItem = layoutManager.findFirstVisibleItemPosition();
for (int i = 0; i < layoutManager.getChildCount(); i++) {
final int viewAdapterPosition = firstItem + i;
final View view = layoutManager.findViewByPosition(viewAdapterPosition);
if (view != null) {
mItemdecorationCallback.draw(c,mTextPaint,view,mItemdecorationCallback.getItemOffsets(layoutManager,viewAdapterPosition),layoutManager.getItemCount(),viewAdapterPosition);
}
}
}
public static Bitmap drawabletoBitmap(Drawable drawable) {
if (drawable == null) return null;
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
int width = drawable.getIntrinsicWidth();
width = width > 0 ? width : 1;
int height = drawable.getIntrinsicHeight();
height = height > 0 ? height : 1;
Bitmap bitmap = Bitmap.createBitmap(width,height,Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0,canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
项目:androidthings-imageclassifier
文件:Helper.java
public static void cropAndRescaleBitmap(final Bitmap src,final Bitmap dst,int sensorOrientation) {
Assert.assertEquals(dst.getWidth(),dst.getHeight());
final float minDim = Math.min(src.getWidth(),src.getHeight());
final Matrix matrix = new Matrix();
// We only want the center square out of the original rectangle.
final float translateX = -Math.max(0,(src.getWidth() - minDim) / 2);
final float translateY = -Math.max(0,(src.getHeight() - minDim) / 2);
matrix.preTranslate(translateX,translateY);
final float scaleFactor = dst.getHeight() / minDim;
matrix.postScale(scaleFactor,scaleFactor);
// Rotate around the center if necessary.
if (sensorOrientation != 0) {
matrix.postTranslate(-dst.getWidth() / 2.0f,-dst.getHeight() / 2.0f);
matrix.postRotate(sensorOrientation);
matrix.postTranslate(dst.getWidth() / 2.0f,dst.getHeight() / 2.0f);
}
final Canvas canvas = new Canvas(dst);
canvas.drawBitmap(src,null);
}
项目:RLibrary
文件:ImageUtils.java
/**
* 添加文字水印
*
* @param src 源图片
* @param content 水印文本
* @param textSize 水印字体大小
* @param color 水印字体颜色
* @param x 起始坐标x
* @param y 起始坐标y
* @param recycle 是否回收
* @return 带有文字水印的图片
*/
public static Bitmap addTextWatermark(Bitmap src,String content,float textSize,int color,float x,float y,boolean recycle) {
if (isEmptyBitmap(src) || content == null) return null;
Bitmap ret = src.copy(src.getConfig(),paint);
if (recycle && !src.isRecycled()) src.recycle();
return ret;
}
项目:QMUI_Android
文件:QMUIQQFaceView.java
private void handleQQFaceAfterMiddleEllipsize(Canvas canvas,int res,Drawable specialDrawable,int widthStart,int widthEnd,int ellipsizeLine,boolean isFirst,boolean isLast) {
int size = res != 0 ? mQQFaceSize : specialDrawable.getIntrinsicWidth() + (isFirst || isLast ? mSpecialDrawablePadding : mSpecialDrawablePadding * 2);
if (mMiddleEllipsizeWidthRecord == -1) {
onRealDrawQQFace(canvas,res,specialDrawable,ellipsizeLine - mLastNeedStopLineRecord,widthStart,widthEnd,isFirst,isLast);
return;
}
int endLines = mNeedDrawLine - ellipsizeLine;
int borrowWidth = (widthEnd - mMiddleEllipsizeWidthRecord) - mCurrentCalWidth;
int needStopLine = borrowWidth > 0 ? mLines - endLines - 1 : mLines - endLines;
int needStopWidth = (borrowWidth > 0 ? widthEnd - borrowWidth :
mMiddleEllipsizeWidthRecord - (widthEnd - mCurrentCalWidth)) +
QMUIdisplayHelper.dp2px(getContext(),5);
if (mCurrentDrawLine < needStopLine) {
if (size + mCurrentDrawUsedWidth > widthEnd) {
toNewDrawLine(widthStart);
onDrawQQFace(canvas,isLast);
} else {
mCurrentDrawUsedWidth += size;
}
} else if (mCurrentDrawLine == needStopLine) {
if (size + mCurrentDrawUsedWidth < needStopWidth) {
mCurrentDrawUsedWidth += size;
} else {
mCurrentDrawUsedWidth = mMiddleEllipsizeWidthRecord;
mMiddleEllipsizeWidthRecord = -1;
mLastNeedStopLineRecord = needStopLine;
}
} else {
onRealDrawQQFace(canvas,ellipsizeLine - needStopLine,isLast);
}
}
项目:miaosou
文件:DividerItemdecoration.java
@Override
public void onDraw(Canvas c,RecyclerView.State state) {
final int left = parent.getPaddingLeft();
final int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for(int i = 0;i < childCount;i ++){
final View child = parent.getChildAt(i);
RecyclerView view = new RecyclerView(parent.getContext());
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + params.bottomMargin;
final int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left,bottom);
mDivider.draw(c);
}
}
项目:tvConnect_android
文件:CaptureActivity.java
private static void drawLine(Canvas canvas,Paint paint,ResultPoint a,ResultPoint b,float scaleFactor) {
if (a != null && b != null) {
canvas.drawLine(scaleFactor * a.getX(),scaleFactor * a.getY(),scaleFactor * b.getX(),scaleFactor * b.getY(),paint);
}
}
@Override
public void draw(Canvas canvas,Paint paint) {
final int viewWidth = ProgressImage.this.getWidth();
final int viewHeight = ProgressImage.this.getHeight();
canvas.drawCircle(viewWidth / 2,viewHeight / 2,(mCircleDiameter / 2 + mShadowRadius),mShadowPaint);
canvas.drawCircle(viewWidth / 2,(mCircleDiameter / 2),paint);
}
项目:LoadingViews
文件:LoadingView.java
@Override
protected void onDraw(Canvas canvas) {
if (!isInEditMode())
mloadingView.onDraw(canvas);
else
EditModeDrawer.drawEditMode(type,getWidth(),getHeight(),contentPadding,Color.GRAY);
}
项目:QRCodeScanner
文件:DefaultScanCursorView.java
protected void drawCorners(Canvas canvas,Rect rect) {
canvas.drawBitmap(mCorner1,rect.left,rect.top,null);
canvas.drawBitmap(mCorner2,rect.right - mCorner2.getWidth(),null);
canvas.drawBitmap(mCorner3,rect.bottom - mCorner3.getHeight(),null);
canvas.drawBitmap(mCorner4,rect.right - mCorner4.getWidth(),rect.bottom - mCorner4.getHeight(),null);
}
项目:mupdf-android-viewer-nui
文件:WheelView.java
/**
* Draws rect for current value
* @param canvas the canvas for drawing
*/
private void drawCenterRect(Canvas canvas) {
int center = getHeight() / 2;
int offset = (int) (getItemHeight() / 2 * 1.2);
centerDrawable.setBounds(0,center - offset,center + offset);
centerDrawable.draw(canvas);
}
项目:Android-music-player
文件:playBtn.java
@Override
protected void onDraw(Canvas canvas) {
PlayBtn.draw(canvas);
super.postDraw(canvas);
if(isPlaying){
playing.draw(canvas);
} else {
stoped.draw(canvas);
}
super.afterDraw(canvas,PlayBtn.S0);
}
项目:CodeCompilerApp
文件:MainActivity.java
@Override
public void onDraw(@NonNull final Canvas canvas) {
if (lineCount != getLineCount() || startingLine != pageSystem.getStartingLine()) {
startingLine = pageSystem.getStartingLine();
lineCount = getLineCount();
lineUtils.updateHasNewLineArray(pageSystem
.getStartingLine(),lineCount,getLayout(),getText().toString());
isGoodLineArray = lineUtils.getGoodLines();
realLines = lineUtils.getRealLines();
}
if (PreferenceHelper.getLineNumbers(getContext())) {
wrapContent = PreferenceHelper.getWrapContent(getContext());
for (int i = 0; i < lineCount; i++) {
// if last line we count it anyway
if (!wrapContent
|| isGoodLineArray[i]) {
realLine = realLines[i];
canvas.drawText(String.valueOf(realLine),numbersWidth,// they are all center aligned
paddingTop + lineHeight * (i + 1),mPaintNumbers);
}
}
}
super.onDraw(canvas);
}
项目:simple-keyboard
文件:DrawingPreviewPlacerView.java
@Override
public void onDraw(final Canvas canvas) {
super.onDraw(canvas);
final int originX = CoordinateUtils.x(mKeyboardViewOrigin);
final int originY = CoordinateUtils.y(mKeyboardViewOrigin);
canvas.translate(originX,originY);
canvas.translate(-originX,-originY);
}
项目:GitHub
文件:PathsDrawable.java
@Override
public void draw(@NonNull Canvas canvas) {
Rect bounds = getBounds();
int width = bounds.width();
int height = bounds.height();
if (mPaint.getAlpha() == 0xFF) {
canvas.save();
canvas.translate(bounds.left-mStartX,bounds.top-mStartY);
if (mPaths != null) {
for (int i = 0; i < mPaths.size(); i++) {
if (mColors != null && i < mColors.size()) {
mPaint.setColor(mColors.get(i));
}
canvas.drawPath(mPaths.get(i),mPaint);
}
mPaint.setAlpha(0xFF);
}
canvas.restore();
} else {
createCachedBitmapIfNeeded(width,height);
if (!canReuseCache()) {
updateCachedBitmap(width,height);
updateCacheStates();
}
canvas.drawBitmap(mCachedBitmap,bounds.left,bounds.top,mPaint);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。