-
Notifications
You must be signed in to change notification settings - Fork 61
/
OverlayView.java
72 lines (59 loc) · 2.67 KB
/
OverlayView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.naman14.washingmachineview;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.widget.LinearLayout;
/**
* Created by naman on 28/08/15.
*/
public class OverlayView extends View {
Bitmap bitmapx;
private Canvas temp;
private Paint paint;
private Paint p = new Paint();
private Paint transparentPaint;
private int holeradius;
private int mMachineColor;
public OverlayView(Context context, AttributeSet attrs) {
super(context, attrs);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
setLayoutParams(params);
final TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.MachineView);
holeradius=attributes.getDimensionPixelSize(R.styleable.MachineView_holeRadius,getDimensionInPixel(60));
mMachineColor=attributes.getColor(R.styleable.MachineView_machineColor,Color.BLACK);
attributes.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
bitmapx = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
temp = new Canvas(bitmapx);
paint = new Paint();
paint.setColor(mMachineColor);
transparentPaint = new Paint();
transparentPaint.setColor(getResources().getColor(android.R.color.transparent));
transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
temp.drawRect(0, 0, getWidth(), getHeight(), paint);
temp.drawCircle(getWidth() / 2, getHeight() / 2, holeradius, transparentPaint);
canvas.drawBitmap(bitmapx, 0, 0, p);
paint.setColor(Color.WHITE);
canvas.drawCircle(getDimensionInPixel(25), getDimensionInPixel(25), getDimensionInPixel(5), paint);
Paint ringPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
ringPaint.setStyle(Paint.Style.STROKE);
ringPaint.setColor(Color.WHITE);
ringPaint.setStrokeWidth(getDimensionInPixel(10));
float radius = holeradius+getDimensionInPixel(15);
canvas.drawCircle((float) 0.5 * getWidth(), (float) 0.5 * getHeight(), radius, ringPaint);
}
private int getDimensionInPixel(int dp){
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
}
}