欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

繪制扇形

要判斷點(diǎn)擊的位置是否是在扇形區(qū)域內(nèi),首先要繪制扇形,繪制扇形的方法可以使用canvas.drawArc()方法。這里介紹的是使用Path的方法,然后調(diào)用canvas.drawPath(ovalPath,paint);方法來(lái)進(jìn)行繪制。

主要代碼如下:

@Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //將畫布的坐標(biāo)原點(diǎn)移到圓心位置
    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;

}

獲取點(diǎn)擊位置,判斷是否在扇形內(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;
}

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Android XML中引用自定義內(nèi)部類view的四個(gè)why

    詳解Android XML中引用自定義內(nèi)部類view的四個(gè)why

    本篇文章主要介紹了詳解Android XML中引用自定義內(nèi)部類view,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
    2016-12-12
  • Android控件RefreshableView實(shí)現(xiàn)下拉刷新

    Android控件RefreshableView實(shí)現(xiàn)下拉刷新

    這篇文章主要為大家詳細(xì)介紹了Android控件RefreshableView實(shí)現(xiàn)下拉刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android RecyclerView 實(shí)現(xiàn)快速滾動(dòng)的示例代碼

    Android RecyclerView 實(shí)現(xiàn)快速滾動(dòng)的示例代碼

    本篇文章主要介紹了Android RecyclerView 實(shí)現(xiàn)快速滾動(dòng)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • RecyclerView索引溢出異常的解決方法

    RecyclerView索引溢出異常的解決方法

    本篇文章主要介紹了RecyclerView索引溢出異常的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Kotlin學(xué)習(xí)教程之協(xié)程Coroutine

    Kotlin學(xué)習(xí)教程之協(xié)程Coroutine

    這篇文章主要給大家介紹了關(guān)于Kotlin學(xué)習(xí)教程之協(xié)程Coroutine的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Android入門之計(jì)時(shí)器Chronometer的使用教程

    Android入門之計(jì)時(shí)器Chronometer的使用教程

    Chronometer是一個(gè)簡(jiǎn)單的定時(shí)器,你可以給它一個(gè)開(kāi)始時(shí)間,并以此定時(shí)。本文將利用個(gè)簡(jiǎn)單的示例為大家講解一下它的使用,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • Android保持屏幕常亮喚醒狀態(tài)的方法

    Android保持屏幕常亮喚醒狀態(tài)的方法

    這篇文章主要介紹了Android保持屏幕常亮喚醒狀態(tài)的方法,實(shí)例分析了Android權(quán)限控制及屏幕狀態(tài)操作的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android SharedPreferences存取操作以及封裝詳解

    Android SharedPreferences存取操作以及封裝詳解

    SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來(lái)保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再?gòu)腟haredPreferences中將值取出
    2021-11-11
  • Android TabHost選項(xiàng)卡標(biāo)簽圖標(biāo)始終不出現(xiàn)的解決方法

    Android TabHost選項(xiàng)卡標(biāo)簽圖標(biāo)始終不出現(xiàn)的解決方法

    這篇文章主要介紹了Android TabHost選項(xiàng)卡標(biāo)簽圖標(biāo)始終不出現(xiàn)的解決方法,涉及Android界面布局相關(guān)屬性與狀態(tài)設(shè)置操作技巧,需要的朋友可以參考下
    2019-03-03
  • android動(dòng)態(tài)加載布局文件示例

    android動(dòng)態(tài)加載布局文件示例

    這篇文章主要介紹了android動(dòng)態(tài)加載布局文件示例,需要的朋友可以參考下
    2014-03-03

最新評(píng)論