最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

需求概述:

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

  技術實現(xiàn):

  自定義View,設置畫筆及對應參數(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);
    //設置無鋸齒
    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)地在屏幕上畫矩形效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

最新評論

双流县| 扎赉特旗| 弋阳县| 循化| 台中市| 汝南县| 灌阳县| 五指山市| 鄢陵县| 洞口县| 澄迈县| 乌兰县| 建昌县| 长海县| 亳州市| 珠海市| 张掖市| 湄潭县| 万宁市| 高要市| 咸阳市| 合作市| 六盘水市| 青岛市| 吉木萨尔县| 望江县| 杭州市| 尉犁县| 莲花县| 修水县| 内丘县| 昭通市| 丽水市| 中宁县| 衢州市| 小金县| 霍林郭勒市| 巴塘县| 万全县| 焦作市| 砚山县|