Android 는 터치 로 화면 에 사각형 효 과 를 동적 으로 그립 니 다.

필요 개요:
화면 에 손가락 으로 영역 을 그 려 서 원 하 는 영역 좌 표를 되 돌려 줍 니 다.
기술 실현:
사용자 정의 View,붓 및 대응 하 는 파 라 메 터 를 설정 하고 onTouchEvent()리 셋 함수 에서 터치 사건 을 판단 합 니 다.직사각형 도형 을 그리다.
코드:
사용자 정의 뷰:

public class GameView extends View {
  //    Paint  
  private Paint mPaint = null;
  private int StrokeWidth = 5;
  private Rect rect = new Rect(0,0,0,0);//      
  public GameView(Context context){
    super(context);
    //    
    mPaint = new Paint();
    mPaint.setColor(Color.RED);
    //    
    // new Thread(this).start();
  }
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //     
    mPaint.setAntiAlias(true);
    canvas.drawARGB(50,255,227,0);
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setStrokeWidth(StrokeWidth);
    mPaint.setColor(Color.GREEN);
    mPaint.setAlpha(100);
    //         
    canvas.drawRect(100, 200, 400, 200 + 400, mPaint);
    mPaint.setColor(Color.RED);
    canvas.drawRect(rect,mPaint);
  }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    int x = (int)event.getX();
    int y = (int)event.getY();
    switch (event.getAction()){
      case MotionEvent.ACTION_DOWN:
        rect.right+=StrokeWidth;
        rect.bottom+=StrokeWidth;
        invalidate(rect);
        rect.left = x;
        rect.top = y;
        rect.right =rect.left;
        rect.bottom = rect.top;
      case MotionEvent.ACTION_MOVE:
        Rect old =
        new Rect(rect.left,rect.top,rect.right+StrokeWidth,rect.bottom+StrokeWidth);
        rect.right = x;
        rect.bottom = y;
        old.union(x,y);
        invalidate(old);
        break;
      case MotionEvent.ACTION_UP:
        break;
      default:
        break;
    }
    return true;//       ,      
  }
}
호출 할 때 onCreate()함수 에 직접 추가 하면 됩 니 다.

super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    gameView = new GameView(this);
    addContentView(gameView); 
필요 에 따라 사용자 정의 클래스 에 권 정 된 범 위 를 되 돌려 주 는 함 수 를 추가 할 수 있 습 니 다.
ps:주의해 야 할 것 은 손가락 이 이동 할 때 화면 이 사각형 을 업데이트 해 야 할 때 원리 적 으로 원래 의 사각형 을 삭제 하고 새로운 사각형 을 그 리 는 것 입 니 다.하지만 중 공 직사각형 두께 의 존재 로 인해
남아 있 는 상황 이 발생 할 수 있 으 므 로 이때 border 두 께 를 빼 면 이 문 제 를 해결 할 수 있다.

Rect old = new Rect(rect.left,rect.top,rect.right+StrokeWidth,rect.bottom+StrokeWidth);
 효과 그림:

위 에서 말 한 것 은 편집장 이 소개 한 안 드 로 이 드 가 터치 로 화면 에 사각형 효 과 를 동적 으로 그 리 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기