@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mCirclePath.addCircle(w / 2, h / 2, 300, Path.Direction.CW);
Region globalRegion = new Region(-w, -h, w, h);
mCircleRegion.setPath(mCirclePath, globalRegion);
}
java类android.graphics.Region的实例源码
RegionClickView.java 文件源码
项目:Android-Code-Demos
阅读 22
收藏 0
点赞 0
评论 0
ShadowParentView.java 文件源码
项目:react-native-andorid-shadow
阅读 31
收藏 0
点赞 0
评论 0
private void drawShadow(Canvas canvas) {
if (shadowDrawable != null) {
Rect newRect = canvas.getClipBounds();
Log.d(TAG,"ShadowParentView has blur! " + newRect);
newRect.inset(-shadowPadding, -shadowPadding);
canvas.clipRect (newRect, Region.Op.REPLACE);
shadowDrawable.draw(canvas);
}
}
BookPageView.java 文件源码
项目:BookPage
阅读 32
收藏 0
点赞 0
评论 0
/**
* 绘制A区域左阴影
* @param canvas
*/
private void drawPathALeftShadow(Canvas canvas, Path pathA){
canvas.restore();
canvas.save();
int left;
int right;
int top = (int) e.y;
int bottom = (int) (e.y+viewHeight);
GradientDrawable gradientDrawable;
if (style.equals(STYLE_TOP_RIGHT)) {
gradientDrawable = drawableLeftTopRight;
left = (int) (e.x - lPathAShadowDis /2);
right = (int) (e.x);
} else {
gradientDrawable = drawableLeftLowerRight;
left = (int) (e.x);
right = (int) (e.x + lPathAShadowDis /2);
}
Path mPath = new Path();
mPath.moveTo(a.x- Math.max(rPathAShadowDis, lPathAShadowDis) /2,a.y);
mPath.lineTo(d.x,d.y);
mPath.lineTo(e.x,e.y);
mPath.lineTo(a.x,a.y);
mPath.close();
canvas.clipPath(pathA);
canvas.clipPath(mPath, Region.Op.INTERSECT);
float mDegrees = (float) Math.toDegrees(Math.atan2(e.x-a.x, a.y-e.y));
canvas.rotate(mDegrees, e.x, e.y);
gradientDrawable.setBounds(left,top,right,bottom);
gradientDrawable.draw(canvas);
}
BookPageView.java 文件源码
项目:BookPage
阅读 31
收藏 0
点赞 0
评论 0
/**
* 绘制A区域右阴影
* @param canvas
*/
private void drawPathARightShadow(Canvas canvas, Path pathA){
canvas.restore();
canvas.save();
float viewDiagonalLength = (float) Math.hypot(viewWidth, viewHeight);//view对角线长度
int left = (int) h.x;
int right = (int) (h.x + viewDiagonalLength*10);//需要足够长的长度
int top;
int bottom;
GradientDrawable gradientDrawable;
if (style.equals(STYLE_TOP_RIGHT)) {
gradientDrawable = drawableRightTopRight;
top = (int) (h.y- rPathAShadowDis /2);
bottom = (int) h.y;
} else {
gradientDrawable = drawableRightLowerRight;
top = (int) h.y;
bottom = (int) (h.y+ rPathAShadowDis /2);
}
gradientDrawable.setBounds(left,top,right,bottom);
Path mPath = new Path();
mPath.moveTo(a.x- Math.max(rPathAShadowDis, lPathAShadowDis) /2,a.y);
// mPath.lineTo(i.x,i.y);
mPath.lineTo(h.x,h.y);
mPath.lineTo(a.x,a.y);
mPath.close();
canvas.clipPath(pathA);
canvas.clipPath(mPath, Region.Op.INTERSECT);
float mDegrees = (float) Math.toDegrees(Math.atan2(a.y-h.y, a.x-h.x));
canvas.rotate(mDegrees, h.x, h.y);
gradientDrawable.draw(canvas);
}
BookPageView.java 文件源码
项目:BookPage
阅读 33
收藏 0
点赞 0
评论 0
/**
* 绘制B区域内容
* @param canvas
* @param pathA
*/
private void drawPathBContent(Canvas canvas, Path pathA){
canvas.save();
canvas.clipPath(pathA);//裁剪出A区域
canvas.clipPath(getPathC(),Region.Op.UNION);//裁剪出A和C区域的全集
canvas.clipPath(getPathB(), Region.Op.REVERSE_DIFFERENCE);//裁剪出B区域中不同于与AC区域的部分
canvas.drawBitmap(pathBContentBitmap, 0, 0, null);
drawPathBShadow(canvas);
canvas.restore();
}
SectionDecoration.java 文件源码
项目:BaseVLayoutAdapterHelper
阅读 23
收藏 0
点赞 0
评论 0
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mPinnedHeaderView != null) {
c.save();
mClipBounds.top = 0;
c.clipRect(mClipBounds, Region.Op.UNION);
c.translate(0, mPinnedHeaderTop);
mPinnedHeaderView.draw(c);
c.restore();
}
}
HighlightView.java 文件源码
项目:XERUNG
阅读 27
收藏 0
点赞 0
评论 0
protected void draw(Canvas canvas) {
canvas.save();
Path path = new Path();
outlinePaint.setStrokeWidth(outlineWidth);
if (!hasFocus()) {
outlinePaint.setColor(Color.BLACK);
canvas.drawRect(drawRect, outlinePaint);
} else {
Rect viewDrawingRect = new Rect();
viewContext.getDrawingRect(viewDrawingRect);
path.addRect(new RectF(drawRect), Path.Direction.CW);
outlinePaint.setColor(highlightColor);
if (isClipPathSupported(canvas)) {
canvas.clipPath(path, Region.Op.DIFFERENCE);
canvas.drawRect(viewDrawingRect, outsidePaint);
} else {
drawOutsideFallback(canvas);
}
canvas.restore();
canvas.drawPath(path, outlinePaint);
if (showThirds) {
drawThirds(canvas);
}
if (showCircle) {
drawCircle(canvas);
}
if (handleMode == HandleMode.Always ||
(handleMode == HandleMode.Changing && modifyMode == ModifyMode.Grow)) {
drawHandles(canvas);
}
}
}
HighlightView.java 文件源码
项目:XERUNG
阅读 25
收藏 0
点赞 0
评论 0
protected void draw(Canvas canvas) {
canvas.save();
Path path = new Path();
outlinePaint.setStrokeWidth(outlineWidth);
if (!hasFocus()) {
outlinePaint.setColor(Color.BLACK);
canvas.drawRect(drawRect, outlinePaint);
} else {
Rect viewDrawingRect = new Rect();
viewContext.getDrawingRect(viewDrawingRect);
path.addRect(new RectF(drawRect), Path.Direction.CW);
outlinePaint.setColor(highlightColor);
if (isClipPathSupported(canvas)) {
canvas.clipPath(path, Region.Op.DIFFERENCE);
canvas.drawRect(viewDrawingRect, outsidePaint);
} else {
drawOutsideFallback(canvas);
}
canvas.restore();
canvas.drawPath(path, outlinePaint);
if (showThirds) {
drawThirds(canvas);
}
if (showCircle) {
drawCircle(canvas);
}
if (handleMode == HandleMode.Always ||
(handleMode == HandleMode.Changing && modifyMode == ModifyMode.Grow)) {
drawHandles(canvas);
}
}
}
BubbleLayout.java 文件源码
项目:HappyBubble
阅读 24
收藏 0
点赞 0
评论 0
@Override
public boolean onTouchEvent(MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
RectF r = new RectF();
mPath.computeBounds(r, true);
mRegion.setPath(mPath, new Region((int) r.left, (int) r.top, (int) r.right, (int) r.bottom));
if (!mRegion.contains((int) event.getX(), (int) event.getY()))
{
mListener.edge();
}
}
return super.onTouchEvent(event);
}
Gauge.java 文件源码
项目:open-rmbt
阅读 34
收藏 0
点赞 0
评论 0
@Override
public void draw(final Canvas canvas)
{
final Rect r = getBounds();
final int saveCount = canvas.save();
canvas.clipRect(r, Region.Op.REPLACE);
canvas.translate(r.left, r.top);
canvas.drawBitmap(background, 0, 0, paint);
drawCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
drawCanvas.drawBitmap(dynamic, 0, 0, null);
final float angle;
if (maxAngle >= 0)
angle = -(float) (360d - (maxAngle * value));
else
angle = (float) (360d - (-maxAngle * value));
drawCanvas.drawArc(ovalRect, startAngle, angle, true, erasePaint);
canvas.drawBitmap(drawBitmap, 0, 0, paint);
canvas.drawBitmap(foreground, 0, 0, paint);
// canvas.drawText(formatter.format(value), textX, textY, textPaint);
canvas.restoreToCount(saveCount);
}