国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-10-22 18:32:18
字體:
來源:轉載
供稿:網友

需求概述:

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

  技術實現:

  自定義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 通過觸摸動態地在屏幕上畫矩形效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和田市| 岐山县| 高淳县| 昭苏县| 洞头县| 视频| 日喀则市| 南溪县| 哈巴河县| 襄垣县| 淮安市| 安乡县| 肥西县| 屏边| 柞水县| 炉霍县| 辉县市| 瑞丽市| 衡东县| 澄江县| 崇礼县| 集安市| 沂水县| 柳河县| 开鲁县| 连城县| 康定县| 确山县| 奉新县| 深圳市| 靖江市| 新平| 荥阳市| 侯马市| 航空| 七台河市| 罗山县| 阿拉善左旗| 揭东县| 台前县| 镇雄县|