android判斷點擊位置是否在扇形區(qū)域內
在做仿支付寶記賬本界面效果時遇到了一個問題,在環(huán)形圖中點擊每一個環(huán)是會顯示出不同的內容,因此,必須判斷用戶到底點擊了哪個圓環(huán),網上查閱資料說可以根據顏色來判斷,但是心里總是覺得根據顏色不是很好的解決方案(雖然可以解決這個問題),因此記錄下自己解決次問題的方法,也有助于自己后續(xù)復習。
繪制扇形
要判斷點擊的位置是否是在扇形區(qū)域內,首先要繪制扇形,繪制扇形的方法可以使用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 使用 DowanloadManager 實現(xiàn)下載并獲取下載進度實例代碼
這篇文章主要介紹了Android 使用 DowanloadManager 實現(xiàn)下載并獲取下載進度實例代碼的相關資料,需要的朋友可以參考下2017-06-06
Android中應用界面主題Theme使用方法和頁面定時跳轉應用
在Android SDK中內置了下面的Theme,可以按標題欄Title Bar和狀態(tài)欄Status Bar是否可見來分類,感興趣的朋友可以了解下哈2013-06-06
Android SharedPreferences的使用分析
本篇文章小編為大家介紹,Android SharedPreferences的使用分析。需要的朋友參考下2013-04-04
Android使用ViewPager實現(xiàn)左右無限滑動
這篇文章主要為大家詳細介紹了Android使用ViewPager實現(xiàn)左右無限滑動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android實現(xiàn)鍵盤彈出界面上移的實現(xiàn)思路
這篇文章主要介紹了Android實現(xiàn)鍵盤彈出界面上移的實現(xiàn)思路,需要的朋友可以參考下2018-04-04
Android編程實現(xiàn)在自定義對話框中獲取EditText中數(shù)據的方法
這篇文章主要介紹了Android編程實現(xiàn)在自定義對話框中獲取EditText中數(shù)據的方法,結合實例形式分析了Android對話框數(shù)據傳遞相關操作技巧,需要的朋友可以參考下2018-01-01

