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

首頁 > 系統 > Android > 正文

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

2019-12-12 00:51:08
字體:
來源:轉載
供稿:網友

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

繪制扇形

要判斷點擊的位置是否是在扇形區域內,首先要繪制扇形,繪制扇形的方法可以使用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;}

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定安县| 沁水县| 龙门县| 商南县| 博客| 兴安盟| 东兴市| 桓仁| 平江县| 贞丰县| 瓮安县| 潢川县| 德兴市| 罗江县| 金堂县| 肥西县| 延川县| 公安县| 巴南区| 沙河市| 永仁县| 安图县| 新化县| 策勒县| 海城市| 遂溪县| 桑植县| 周宁县| 张家界市| 喀什市| 鹤峰县| 长兴县| 寻乌县| 五原县| 青田县| 滕州市| 儋州市| 正镶白旗| 壤塘县| 安龙县| 清新县|