80,359
社区成员
发帖
与我相关
我的任务
分享
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCanvas = canvas;
mCanvas.drawOval(mCirRect, mCP);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mCP.setColor(mPressColor);
mCanvas.drawOval(mCirRect, mCP);//①
invalidate();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mCP.setColor(mNormalColor);
mCanvas.drawOval(mCirRect, mCP);//②
invalidate();
break;
default:
break;
}
return true;
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mCanvas = null;
}
public class Main3Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Button btn = findViewById(R.id.submit_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Main3Activity.this, Main2Activity.class);
startActivity(intent);
}
});
}
}
public class Main2Activity extends AppCompatActivity {
private static final String TAG = "Main2Activity";
private RecordButton btn;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btn = findViewById(R.id.camera_record_btn);
}
}
public class RecordButton extends FrameLayout implements View.OnTouchListener {
private static final String TAG = "RecordButton";
private Canvas mCanvas;
private RectF mCirRect;
private Paint mCP;
private float mRingWidth;
private int mNormalColor;
private int mPressColor;
public RecordButton(@NonNull Context context) {
this(context, null);
}
public RecordButton(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public RecordButton(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context, attrs);
}
private void initView(Context context, AttributeSet attrs) {
setWillNotDraw(false);
mRingWidth = (int) (getResources().getDisplayMetrics().density * 10 + 0.5f);
mNormalColor = getResources().getColor(android.R.color.holo_red_dark);
mPressColor = getResources().getColor(android.R.color.holo_red_light);
mCP = new Paint();
mCP.setColor(mNormalColor);
mCP.setAntiAlias(true);
mCirRect = new RectF();
setOnTouchListener(this);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
float width = getMeasuredWidth();
float height = getMeasuredHeight();
mCirRect.set(mRingWidth, mRingWidth, width - mRingWidth, height - mRingWidth);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mCanvas = canvas;
mCanvas.drawOval(mCirRect, mCP);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mCP.setColor(mPressColor);
mCanvas.drawOval(mCirRect, mCP);
invalidate();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mCP.setColor(mNormalColor);
mCanvas.drawOval(mCirRect, mCP);
invalidate();
break;
default:
break;
}
return true;
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mCanvas = null;
}
}