欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 通過觸摸動態(tài)地在屏幕上畫矩形效果

 更新時間:2017年07月14日 09:16:33   作者:CodeMonkey404  
在屏幕上用手指畫出一個區(qū)域,返回所圈的區(qū)域坐標。通過自定義view設(shè)置畫筆及對應(yīng)參數(shù),在onTouchEvent()回調(diào)函數(shù)里,對觸摸事件進行判斷。畫出矩形圖形,具體實現(xiàn)代碼大家參考下本文

需求概述:

  在屏幕上用手指畫出一個區(qū)域,返回所圈的區(qū)域坐標。

  技術(shù)實現(xiàn):

  自定義View,設(shè)置畫筆及對應(yīng)參數(shù),在onTouchEvent()回調(diào)函數(shù)里,對觸摸事件進行判斷。畫出矩形圖形。

  代碼:

  自定義View:

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);
    //構(gòu)建對象
    mPaint = new Paint();
    mPaint.setColor(Color.RED);
    //開啟線程
    // new Thread(this).start();
  }
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //設(shè)置無鋸齒
    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;//處理了觸摸信息,消息不再傳遞
  }
}

調(diào)用時,只需要在onCreate()函數(shù)里,直接添加就可以:

super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    gameView = new GameView(this);
    addContentView(gameView); 

根據(jù)需要可以在自定義類中,加入返回圈定范圍的函數(shù)。

ps:需要注意的是,在手指移動的時候,屏幕需要更新矩形時,原理上刪除原來矩形,畫上新矩形。但是由于空心矩形邊厚度的存在,

會出現(xiàn)遺留的情況,此時要減去border厚度,可以解決上述問題。

Rect old = new Rect(rect.left,rect.top,rect.right+StrokeWidth,rect.bottom+StrokeWidth);

 效果圖:

以上所述是小編給大家介紹的Android 通過觸摸動態(tài)地在屏幕上畫矩形效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論