最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android判斷點擊位置是否在扇形區(qū)域內(nèi)

 更新時間:2018年05月26日 14:53:54   作者:Tom_ji  
這篇文章主要為大家詳細介紹了android判斷點擊位置是否在扇形區(qū)域內(nèi),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

繪制扇形

要判斷點擊的位置是否是在扇形區(qū)域內(nèi),首先要繪制扇形,繪制扇形的方法可以使用canvas.drawArc()方法。這里介紹的是使用Path的方法,然后調(diào)用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;

}

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

 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;
}

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

临汾市| 托克逊县| 乳源| 玉溪市| 康定县| 肥东县| 忻城县| 河曲县| 德化县| 景洪市| 缙云县| 光泽县| 信阳市| 梅州市| 定日县| 东台市| 乌海市| 门头沟区| 宣武区| 寻甸| 牙克石市| 汝州市| 霍邱县| 大足县| 壤塘县| 文山县| 获嘉县| 平顺县| 镇雄县| 湘潭县| 顺平县| 收藏| 岳阳市| 嘉兴市| 区。| 酒泉市| 广昌县| 台南县| 云阳县| 达尔| 尤溪县|