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

首頁 > 系統 > Android > 正文

android判斷點擊位置是否在扇形區域內

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

在做仿支付寶記賬本界面效果時遇到了一個問題,在環形圖中點擊每一個環是會顯示出不同的內容,因此,必須判斷用戶到底點擊了哪個圓環,網上查閱資料說可以根據顏色來判斷,但是心里總是覺得根據顏色不是很好的解決方案(雖然可以解決這個問題),因此記錄下自己解決次問題的方法,也有助于自己后續復習。

繪制扇形

要判斷點擊的位置是否是在扇形區域內,首先要繪制扇形,繪制扇形的方法可以使用canvas.drawArc()方法。這里介紹的是使用Path的方法,然后調用canvas.drawPath(ovalPath,paint);方法來進行繪制。

主要代碼如下:

@Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    //將畫布的坐標原點移到圓心位置    canvas.translate((getWidth() + getPaddingLeft() - getPaddingRight()) / 2,        (getHeight() + getPaddingTop() - getPaddingBottom()) / 2);    ovalPath.moveTo(0, 0);    ovalPath.lineTo(100, 0);    RectF oval = new RectF(-100,-100,100,100);    ovalPath.addArc(oval, 0, 160);    ovalPath.lineTo(0, 0);    ovalPath.close();    RectF r = new RectF();    ovalPath.computeBounds(r, true);    mRegion.setPath(ovalPath, new Region((int)r.left, (int) r.top, (int) r.right,(int)r.bottom));    Paint paint = new Paint();    paint.setColor(Color.RED);    paint.setAntiAlias(true);    paint.setStrokeWidth(1);    paint.setStyle(Paint.Style.STROKE);    canvas.drawPath(ovalPath,paint);    mCenterCircleX = (getWidth() + getPaddingLeft() - getPaddingRight()) / 2;    mCenterCircleY = (getHeight() + getPaddingTop() - getPaddingBottom()) / 2;}

獲取點擊位置,判斷是否在扇形內的方法如下:

 public boolean onTouchEvent(MotionEvent event) {    float x;    float y;    switch (event.getAction()) {      case MotionEvent.ACTION_DOWN:        x = event.getX()-mCenterCircleX;        y = event.getY()-mCenterCircleY;        boolean b = mRegion.contains((int) x, (int) y);        Log.d(TAG, "onTouchEvent: b: "+b +" x: "+ x+" y: "+y);        break;    }    return true;}

這里要注意的是:獲取點擊位置后,要減去坐標的偏移量,否則將得不到正確的結果。

android,判斷,點擊位置

android,判斷,點擊位置

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东山县| 九龙城区| 长丰县| 云梦县| 鹤岗市| 中宁县| 长乐市| 桐梓县| 乌什县| 长顺县| 曲阳县| 土默特左旗| 平和县| 股票| 班玛县| 孟村| 胶南市| 合江县| 浦东新区| 佛学| 大连市| 定边县| 突泉县| 喀喇沁旗| 安义县| 炎陵县| 和平区| 井陉县| 武胜县| 福清市| 平武县| 阜新| 巨鹿县| 邵武市| 枣阳市| 上思县| 洛阳市| 油尖旺区| 阳曲县| 南宫市| 游戏|