国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 裕民县| 建昌县| 壤塘县| 筠连县| 商南县| 张家港市| 普宁市| 密山市| 佳木斯市| 东阿县| 牟定县| 定结县| 河源市| 永丰县| 宁化县| 六安市| 涿鹿县| 平昌县| 怀集县| 石家庄市| 江口县| 铁岭市| 乌兰县| 丹阳市| 成武县| 宿松县| 黔江区| 永仁县| 台南市| 嘉荫县| 股票| 阳朔县| 徐州市| 武平县| 东乡族自治县| 和静县| 绥江县| 焦作市| 乐至县| 博罗县| 福鼎市|