91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android怎么通過觸摸動態地在屏幕上畫矩形效果

發布時間:2022-04-08 15:26:54 來源:億速云 閱讀:200 作者:iii 欄目:大數據

這篇文章主要介紹了Android怎么通過觸摸動態地在屏幕上畫矩形效果的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android怎么通過觸摸動態地在屏幕上畫矩形效果文章都會有所收獲,下面我們一起來看看吧。

需求概述:

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

  技術實現:

  自定義View,設置畫筆及對應參數,在onTouchEvent()回調函數里,對觸摸事件進行判斷。畫出矩形圖形。

  代碼:

  自定義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);
    //構建對象
    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);

 效果圖:

Android怎么通過觸摸動態地在屏幕上畫矩形效果

關于“Android怎么通過觸摸動態地在屏幕上畫矩形效果”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Android怎么通過觸摸動態地在屏幕上畫矩形效果”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鸡东县| 江油市| 太谷县| 紫金县| 文登市| 伊金霍洛旗| 尤溪县| 北京市| 张家界市| 莱芜市| 清涧县| 泗洪县| 冕宁县| 禹州市| 元阳县| 阿瓦提县| 南丰县| 天峨县| 麻栗坡县| 湟中县| 达尔| 靖边县| 泸西县| 揭东县| 湖南省| 靖安县| 泊头市| 云林县| 昌图县| 武平县| 五峰| 巨野县| 英超| 乐陵市| 互助| 三门峡市| 嘉荫县| 德江县| 林甸县| 安仁县| 尤溪县|