0
제 활동에서 카메라 미리보기와 그 위에 그려지는 버튼 (view
은 버튼 모양)을 표시합니다. 문제는 그 뷰에서 클릭 리스너를 설정하면 (카메라 미리보기에서도) 화면에서 클릭하는 위치에 관계없이 click 이벤트가 발생한다는 것입니다. 이 경우 수신기가 올바르게 설정되지 않는 이유는 무엇입니까?
FrameLayout preview = (FrameLayout) findViewById(id.camera_preview);
preview.addView(mCameraPreview);
CameraButtonView cameraButton = new CameraButtonView(getBaseContext());
preview.addView(cameraButton);
cameraButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(CameraTestActivity.this, MenuActivity.class);
startActivity(intent);
finish();
}
});
는 그래서
FrameLayout
이 카메라 미리보기입니다 :
이
는 코드입니다.CameraButtonView
은 그 위에 그려지는 뷰입니다. (어딘가에는 공간이 많이 필요하지 않습니다.) 리스너는 실제로 뷰에 설정됩니다.
FrameLayout
의 아무 곳이나 클릭하면 내 이벤트가 실행되는 이유는 무엇입니까? 또한 버튼 만 이벤트에 구독하도록 어떻게 수정할 수 있습니까?
카메라 버튼 전망 :
public class CameraButtonView extends View
{
Paint buttonPaint = new Paint();
Paint textPaint = new Paint();
SizeF size = new SizeF(500, 125);
public CameraButtonView(Context context)
{
super(context);
buttonPaint.setColor(Color.RED);
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(35);
}
@Override
public void onDraw(Canvas canvas)
{
RectF surface = RectangleHelper.create(0, 0, canvas.getWidth(), canvas.getHeight());
PointF alignedPoint = RectangleHelper.align(surface, size, ContentAlignment.BottomCenter, AlignmentType.Internal);
RectF content = RectangleHelper.create(alignedPoint, size);
Rect textRectangle = new Rect();
String buttonText = "Click to take a pic.";
buttonPaint.getTextBounds(buttonText, 1, buttonText.length(), textRectangle);
PointF alignedTextPoint = RectangleHelper.align(content, new SizeF(textRectangle.width(), textRectangle.height()), ContentAlignment.MiddleLeft, AlignmentType.Internal);
canvas.drawRect(content, buttonPaint);
canvas.drawText(buttonText, alignedTextPoint.x, alignedTextPoint.y, textPaint);
}
}
나는 코드를 제공합니다. 잠시 기다리세요. – phadaphunk
또는 CameraButtonView의 onDraw를 재정 의하여 canvas.drawColor (Color.Magenta);를 수행하십시오. 그런 다음 화면 전체를 채우고 있는지 확인하십시오. – beplaya
아니, 이미 빨간 색과 같지 않아서 화면의 일부가 바닥에있는 것을 분명히 볼 수 있습니다. – phadaphunk